将And/Or与PredicateBuilder相结合?
我有一个Ids的列表,我只想在第一个列表上进行AND,然后在后续的列表上进行OR.过去,我保留了一个counter变量,当counter为1时,我会做And,但是之后我会做OR,但是我很好奇是否有一个更容易的方法: foreach(string id in Ids) { predicate.And(x=> id.Contains(x.id)); //I want to do an And only on the first id. } 这是我过去所做的,但是有一种更简洁的方法: int counter = 1; foreach (var Id in Ids) { string i = Id; if (counter == 1) { predicate = predicate.And(x => i.Contains(x.id)); counter++; } else
2 2024-01-07
编程技术问答社区
PredicateBuilder。OR条件嵌套在.And()中
我正在使用peadicateBuilder来构建一个查询,以对umbraco节点列表进行过滤搜索结果.我的搜索ID值通过Querystring作为字符串贯穿,然后将其比较到列表中的每个Umbraco节点上的字符串字段以获得匹配. 当前,代码与目标字段中的匹配项在查询字符串中有一个正常运行的值.我需要在我的.和()内添加一个条件性,该条件试图将Q与字段字符串匹配,如果该字段具有值,但是如果字段没有值,则它也应与之匹配. if (!string.IsNullOrEmpty(qsId)) { predicate = predicate.And(i => Regex.IsMatch(i.GetProperty("makeTag").Value.ToString(), "\\b" + qsId + "\\b")); } 我尝试了以下内容,但似乎无法正常工作: if (!string.IsNullOr
4 2024-01-06
编程技术问答社区
如何动态地创建谓词
嗨,我想使用谓词表达式创建一个基于搜索字符串的列表. 我有一个类型产品列表包含不同的名称. List list1 = new List(); list1.Add(new products("sowmya")); list1.Add(new products("Jane")); list1.Add(new products("John")); list1.Add(new products("kumar")); list1.Add(new products("ramya")); listBox1.ItemsSource = list1; 现在,我想根据用户输入过滤内容.用户将以'+'为saparator输入n no字符串.收到字符串后,我会将它们传递给谓词对象 private void textBox1_KeyDown(object
2 2024-01-03
编程技术问答社区
谓词生成器是如何工作的
简而言之, c#的免费类称为predicateBuilder,该类构建Linq predicate by take afipic office 在这里/a>.这是该方法的摘录,该方法将新表达式添加到谓词.有人可以解释吗? (我已经看过这个问题,我不想要像那里这样的一般答案.我正在寻找对表达方式的特定解释. public static Expression> And (this Expression> expr1, Expression> expr2) { var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ()); return Expression.Lambda
0 2024-01-02
编程技术问答社区
Xcode 4中带有核心数据的图形化谓词生成器
我正在使用Xcode 4,我找不到一种与图形谓词构建器一起使用的方法.还在吗?我该如何使用?文档在哪里? 谢谢 解决方案 在Xcode 4中,突出显示您的模型,然后: 选择编辑器 - >添加提取请求 然后突出显示它(如果愿意,可以重命名).谓词建造器在右窗格中:
2 2023-12-20
编程技术问答社区
返回零记录的PredicateBuilder
我正在使用peadicateBuilder创建一个动态,其中从数据汇总来查询数据.我有一个字典,其中包含我需要搜索的列名和值.我只是在字典上迭代,如果键匹配列名,则将该键和值添加到谓词.一切似乎都可以正常工作,直到实际查询与数据表相对,我会收回零记录:(但是,如果我用p => p [" Yenal" ==" 2010"之类的动态谓词替换了动态谓词,我会得到记录回来.这是代码: var objectList = table.AsEnumerable(); Func predicate = GetPredicate(parms, table.Columns); var list1 = objectList.Where(predicate).ToList(); private static Func GetPredicate(Dictionary parms, DataColumnColle
4 2023-12-03
编程技术问答社区
在VB.NET中使用PredicateBuilder
我已经在单独的C#项目中重新创建了PredicateBuilder类,并且我正在尝试在VB.NET项目中使用它,但是我一直遇到以下错误: 超负荷分辨率失败了,因为无法访问"或"接受此数量的参数. 当我这样使用时: Dim predicate = PredicateBuilder.False(Of t_Quote)() predicate = predicate.Or(Function(q) q.iQuoteType = iQuoteType) 引用了自发性项目,我正在使用正确的导入语句,并且所有这些都没有任何错误. 知道我要去哪里? 这是我正在使用的C#中的peedicateBuilder类: 公共静态类PredicateBuilder { 公共静态表达> true(){ 返回f => true; } 公共静态表达式> false(){ 返回f => false; } public static Expression
10 2023-11-14
编程技术问答社区
实体框架和谓词生成器-谓词在SQL查询中被忽略了
我对EF和谓词构建器有问题.我已经完成了所有说明,而且我很确定我正在做所有的事情,但是当我运行SQL Profiler并检查查询到数据库时,它忽略了我的谓词,并在表中获取所有记录,这是桌子目前最多可达60万行,因此它会使事情放慢一点.然后在数据库进行查询后,我的谓词被应用. 有人可以告诉我我缺少什么吗? var predicate = PredicateBuilder.True(); var classFilter = PredicateBuilder.False(); classFilter = classFilter.Or(x => x.Community == "Air Force"); classFilter = classFilter.Or(x => x.Community == "Navy"); predicate = predicate.And(classFilter); // Add several more
12 2023-09-18
编程技术问答社区
Sitecore Search Predicate Builder的多个关键词搜索与提升工作不尽如人意
我有Sitecore页面/Lucene文档,其中包含以下字段: 标题 文件名 内容 文件内容 我正在为这些搜索创建以下要求: 应首先返回 title 字段中包含整个短语的命中. fileName字段中包含整个短语字段中的命中应将其返回. 应将内容中包含整个短语中的整个短语返回第三 应将文件内容中的整个短语中的整个短语返回第四 包含 的 (按任何顺序) title字段中的中应返回第五 在 filename字段中包含的 所有应返回第六个 所有关键字(按任何顺序)的hits content 中应返回第七. 的hits(按任何顺序) file contents 中应返回第八. 这是我所拥有的: public static Expression> GetSearchTermPredicate(string searchTerm) where T : ISearchableItem {
10 2023-09-04
编程技术问答社区
如何从表达式树中动态地构建一个谓词方法?
这是场景: Silverlight 4.0,datagrid,pageCollectionView itemsssource. 目的是将过滤器应用于PCV.过滤器需要为Predicate(Method) - 方法在其中实现对象的某些逻辑并返回true/false以包含. 我所拥有的是,需要选择在过滤器逻辑中包含3个不同的标准,并且明确的代码很快就会变得丑陋.我们不想要那个吗? 所以我看到有一种方法可以使用PredicateBuilder构建表达树,然后将其传递到Linq. IQueryable SearchProducts (params string[] keywords) { var predicate = PredicateBuilder.False(); foreach (string keyword in keywords) { string temp = keyword; predica
6 2023-09-03
编程技术问答社区
用短日期构建动态lambda谓词
我有以下代码,可以帮助我通过反射构建lambda表达式.但是,当我尝试比较Date时,它将我的值转换为完整的DateTime邮票.我该如何构建我的谓词,以便它只会比较短期? System.Reflection.PropertyInfo propInfo = typeof(T).GetProperty(property); Type propertyType = propInfo.PropertyType; if (Utilities.IsNullableType(propertyType)) { propertyType = Nullable.GetUnderlyingType(propertyType); } ParameterExpression propAlias = Expression.Parameter(typeof(T), alias); MemberExpression left = Expression.Property(propAlias, proper
24 2023-08-04
编程技术问答社区
如何用linq2sql和OR运算符使用谓词生成器
我有两个表格(table1,table2-唯一我知道),分别具有1到达的关系和两个表ID列之间的外键. 使用 linq2sql 我正在尝试选择所有 table1 条目,以便它们相应的 table2 值在列表中至少包含1个项目,我通过它. 这是我在 linqpad (很棒的程序)中使用的一些示例代码来测试它,但是我会遇到错误 notsupportedException:未支撑的超载用于查询操作员'any'. long[] items = { 3, 5, 8 }; var predicate = PredicateBuilder.False(); foreach (long i in items) { long t = i; predicate = predicate.Or(att => att.ID == t); } //TABLE2.Where(predicate).Dump(); //works like a charm IQue
12 2023-06-14
编程技术问答社区
有没有人能够成功地使用albahari.com的PredicateBuilder来对付MongoDB?
我使用来自Albahari的流行谓词Builder具有以下代码: var predicate = PredicateBuilder.False(); predicate.Or(p => p.Subject.Contains("a")); var test = this.MongoConnectionHandler.MongoCollection.AsQueryable().Where(predicate).ToList(); return this.MongoConnectionHandler.MongoCollection.AsQueryable().Count(predicate); 问题在于,即使该列中有包含字母" a"的记录,它也不会返回任何内容.删除谓词构建器并仅执行直接包含Asqueryable()返回匹配记录. 是否有人能够成功使用Mongo? 成功使用PredicateBuilder库 解决方案 我在这里找到了类似问题的解决方案
22 2023-03-31
编程技术问答社区
有两个表的谓词生成器
a party 可以具有一个或多个联系人对象. 我想选择所有 partypone 谁的街道名称包含一个特定的关键字. 如果我只想在 party 中搜索,我可以使用以下代码.但是,如何将其扩展到 contact 中搜索? public IQueryable SearchParties(List keywords) { var predicate = PredicateBuilder.False(); foreach (string word in keywords) { var keyword = word; predicate = predicate.Or(p => p.surname.Contains(keyword)); predicate = predicate.Or(p => p.lastnam
22 2023-03-07
编程技术问答社区
带有条件性AND、OR和NOT过滤器的Linq谓词生成器
我们有一个使用LINQ到SQL的项目,我需要重写几个搜索页面,以允许客户选择他们希望执行和还是或或或搜索. i虽然关于使用 predicateBuilder 并使其正常运作良好,并且已经变得很好我认为.我有效地有一个包含我谓词的类,例如: internal static Expression> Description(string term) { return p => p.Description.Contains(term); } 要执行我正在执行此操作的搜索(简短省略了一些代码): public Expression> ToLinqExpression() { var predicates = new List>>(); // build up predicates here if (SearchType ==
44 2023-03-07
编程技术问答社区
LINQ to SQL 谓词生成器
IM使用peedicateBuilder,如下所示, . var inner = PredicateBuilder.False(); foreach (var f in Filtermodel.InstrumentsFilterList.Where(s => s.isActive)) { int temp = f.InstrumentID; inner = inner.Or(ud => ud.InstrumentId == temp); } 我为什么必须使用该温度变量? 解决方案 因为谓词builder正在构建一个表达式,该表达式将在以后的时间点执行.当编译器生成代表的关闭时,它会找到当前范围中创建的任何值,并将其带入闭合.由于instrumentId是值类型(int),因此初始化和复制值表示每个代表/关闭都会随身携带该值.如果您每次都不创建值的副本,则该表达式将仅具有对F.Instrume
18 2023-03-07
编程技术问答社区
EF5中的动态谓词构建
好, 我必须构建一个谓词才能从EF5 和中的已知实体中选择未知数的列,并通过未知数的列数一个始终为来自儿童收藏的名字. 所以这就是我最终需要的 var q = db.Set() .Where(e => e.Code.Contains("q") || e.Translations.FirstOrDefault(t => t.Culture.ID == "whatever").Description.Contains("q")) .Select(e => new { e.ID, e.Code, Name = e.Translations.FirstOrDefault(t => t.Culture.ID == "wh
18 2023-03-06
编程技术问答社区
LINQ to Entities查询中可重复使用的谓语表达式
在整个应用程序中,在许多不同的查询中发生的一套标准越来越复杂.为了避免重复此代码,我想将这些条件分为 expression 又可以在必要时依次应用: 将条件归还条件: . public Expression> GetComplexPredicate() { // complex predicate is returned as an Expression: return c => ... } 重复使用: var result = repository.Invoice.Where(GetComplexPredicate()) 但是,以下语句不会编译,因为 c.invoice 只是 iCollection . . var result = repository.Customer .Where(c => c.Country == "US" && c.Invoice.Any(GetComplexPredica
10 2023-03-06
编程技术问答社区
C# PredicateBuilder Entities。在指定的LINQ to Entities查询表达式中没有绑定参数'f'。
我需要构建一个动态过滤器,我想继续使用实体.由于这个原因,我想使用来自阿尔巴哈里的谓词builder. 我创建了以下代码: var invoerDatums = PredicateBuilder.True(); var inner = PredicateBuilder.False(); foreach (var filter in set.RapportInvoerFilter.ToList()) { if(filter.IsDate) { var date = DateTime.Parse(filter.Waarde); invoerDatums = invoerDatums.Or(o => o.Van >= date && o.Tot
16 2023-03-06
编程技术问答社区
使用PredicateBuilder,是否有办法从字段名的可变长度列表中建立一个谓词?
我有一个包含可变数量字段名称的列表.我想在此列表中进行循环,并创建一个谓词,该谓词过滤了所有在该字段中具有值的记录. foreach (var field in FieldNames) { myPredicate= myPredicate.And(m => m.*field*!=null ); } 我不确定该怎么做.有什么建议吗? tia 解决方案 如果您知道编译时属性是什么,则只能编写lambda表达式.由于您显然不知道要检查的字段是什么,因此您必须手动创建表达式. 您需要这样的辅助功能来生成表达式: public Expression> GenerateFieldNotNullExpression(string fieldName) { var parameter = Expression.Parameter(ty
12 2023-03-06
编程技术问答社区