Tag: where

PredicateBuilder返回零记录

我正在使用PredicateBuilder创建一个动态Where子句来查询DataTable中的数据。 我有一个包含我需要搜索的列名和值的字典。 我只是迭代字典,如果键匹配列名,则将该键和值添加到谓词。 一切似乎工作正常,直到对数据表运行实际查询,我得到零记录:(但如果我用p => p [“年”] ==“2010”替换动态谓词,我得到记录回来。这是代码: var objectList = table.AsEnumerable(); Func predicate = GetPredicate(parms, table.Columns); var list1 = objectList.Where(predicate).ToList(); private static Func GetPredicate(Dictionary parms, DataColumnCollection dataColumnCollection) { var predicate = PredicateBuilder.False(); foreach (var parm in parms) { if (dataColumnCollection.Contains(parm.Key)) { var copy = parm; predicate = predicate.And(p => p[copy.Key] == copy.Value); } } […]

LINQ中的多个.Where()语句是否存在性能问题?

我想知道多个.Where()语句是否存在性能影响。 例如,我可以写: var contracts = Context.Contract .Where( c1 => c1.EmployeeId == employeeId ) .Where( c1 => !Context.Contract.Any( c2 => c2.EmployeeId == employeeId && c1.StoreId == c2.StoreId && SqlFunctions.DateDiff(“day”, c2.TerminationDate.Value, c1.DateOfHire.Value) == 1 ) ) .Where( c1 => !Context.EmployeeTask.Any( t => t.ContractId == c1.Id ) ); 或者我可以将它们全部组合到一个Where()子句中,如下所示: var contracts = Context.Contract .Where( c1 => c1.EmployeeId == […]

如何在LinqToSql中执行WHERE … IN …子句?

忍受我,我开始:如何使用WHERE … IN …类型的子句选择多个元素 select * from orders where orderid in (1, 4, 5) 在LinqToSql? 因为他们吓唬我,所以我宁愿没有lambda表达。 提前致谢!

LINQ WHERE语句/忽略条件

如果参数为null或空FE,我需要忽略WHERE语句中的部分或全部条件: 我有简单的LINQ查询 var query = from x in context.a where xp == param1 && xi == param2 select x; 如果param1为null或emty,我怎么能忽略xp == param1 ? 编辑 试过这个 var query = from myLog in myContext.ApsValidationLogs where (myLog.systemtype == comboBoxSystemType.SelectedItem.ToString() || string.IsNullOrEmpty(comboBoxSystemType.SelectedItem.ToString())) && (myLog.bankid == comboBoxBankId.SelectedItem.ToString() || string.IsNullOrEmpty(comboBoxBankId.SelectedItem.ToString()))) select myLog; 但得到了 Object reference not set to an instance of […]

算在哪里?

是否可以在哪里使用列表。 我想要这样的想法: public class Customer { string FirtsName; string LastName; int Number; ….. } 我想使用复选框过滤客户。 如果我选择FirstName和Number,那么将生成where子句 .where(x=> x.FirstName == “SomeFirstName” && x.Number == someNumber) 如果我只选择数字,那么将生成where子句 .where(x.Number == someNumber) 如果我选择FirstName,LastName和Number,那么将生成where子句 .where(x=> x.FirstName == “SomeFirstName” && x.Number == someNumber && x.LastName == “LastName”) 我的意思不仅是动态列名,我也想生成where子句。 列名和值来自列表: 我希望,我可以解释一下。 提前致谢。