Tag: predicate

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); } } […]

generics谓词的默认值作为参数

第一次问我:) 我需要一些方法来定义使用格式的generics的默认谓词 Func 然后将其用作默认参数。 像这样的东西: public bool Broadcast(byte command, MemoryStream data, bool async, Func predicate = (T t) => true) 当我这样做时,我得到编译错误: ‘predicate’的默认参数值必须是编译时常量 有没有一种顺利的方法可以做到这一点,我缺少或应该使谓词函数可以为空并相应地改变我的函数逻辑? 谢谢,