草庐IT

一元谓词

全部标签

c# - 最小起订量 - 安装方法中的 LINQ 谓词

在我的方法中,我让我的存储库执行此操作:boolisConditionMet=MyRepository.Any(x=>x.Condition==true);我正在尝试像这样使用MOQ来模拟这个:MyMockedRepository.Setup(x=>x.Any(y=>y.Condition==true)).Returns(true);但是,当代码执行时,存储库调用总是返回false。有没有办法使用MOQ来做到这一点?**编辑-根据请求添加代码**我正在使用NHibernate,所以我的Any方法在我的基础存储库中并按如下方式实现:publicvirtualboolAny(Express

c# - 通用谓词的默认值作为参数

第一次问我:)我需要一些方法来使用格式上的泛型来定义默认谓词Func然后将其用作默认参数。像这样:publicboolBroadcast(bytecommand,MemoryStreamdata,boolasync,Funcpredicate=(Tt)=>true)当我这样做时,我得到了编译错误:'predicate'的默认参数值必须是编译时常量是否有一种我缺少的流畅的方法来执行此操作,或者是否应该使谓词函数可为空并相应地更改我的函数逻辑?谢谢, 最佳答案 方法参数的默认值必须是编译时常量,因为默认值实际上是由编译器复制到方法的所有

c# - 如何在 LINQ to Entities 中为 Entity Framework 对象使用谓词

我正在为我的数据访问层中的EntityFramework对象使用LINQtoEntities。我的目标是尽可能多地从数据库中进行过滤,而不对内存中的结果应用过滤逻辑。为此,业务逻辑层将谓词传递给数据访问层。我是说Func所以,如果我直接使用这个谓词,比如publicIQueryableGetAllMatchedEntities(FuncisMatched){returnqry=_Context.MyEntities.Where(x=>isMatched(x));}我遇到了异常[System.NotSupportedException]---{"TheLINQexpressionnode

c# - 有没有办法否定谓词?

我想做这样的事情:Listlist1=...Listlist2=...Predicatecondition=......list2.RemoveAll(!condition);...list2.AddRange(list1.FindAll(condition));但是,这会导致编译器错误,如!不能应用于Predicate.有什么办法吗? 最佳答案 您可以使用lambda表达式来定义一个匿名委托(delegate),它是否定谓词结果的结果:list.RemoveAll(x=>!condition(x));另一种选择:staticPre

c# - IndexOf 谓词?

我想在一个列表中找到一个元素的索引,该列表匹配某个谓词,有没有比以下更好的方法:varindex=list.IndexOf(list.Find(predicate));? 最佳答案 你在找List.FindIndex(predicate)吗? 关于c#-IndexOf谓词?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4680723/

c# - 创建通用谓词函数

首先,我不确定用什么术语来问这个问题,这可能是我自己搜索没有找到答案的原因。所以我正在使用LinqtoSQL(C#、.Net4),我想获得符合条件的所有用户的列表,我会做这样的基本操作:varusers=DataContext.Users.Where(x=>x.Criteria1=="something");但在这种情况下,我想匹配几个字段,问题是这些特定字段是一个常见的检查,我希望能够创建一个专用函数,我可以在我的任何用户查询中使用它检查此匹配项。为了更好地解释这一点,让我们举个例子:假设一个用户有5个标志,我想要一个共同检查以查看是否设置了这些标志中的任何。所以我可以这样写我的查询

c# - 如何动态创建 Expression<Func<MyClass, bool>> 谓词?

我将如何使用表达式树来动态创建一个看起来像...的谓词(p.Length==5)&&(p.SomeOtherProperty=="hello")这样我就可以像这样将谓词插入到lambda表达式中...q.Where(myDynamicExpression)...我只需要指出正确的方向。更新:抱歉,伙计们,我遗漏了一个事实,即我希望谓词具有上述多个条件。抱歉造成混淆。 最佳答案 原创像这样:varparam=Expression.Parameter(typeof(string),"p");varlen=Expression.Prope

c# - IEnumerable<T>.包含谓词

我只需要澄清一下,给定的集合包含一个元素。我可以通过collection.Count(foo=>foo.Bar=="Bar")>0)做到这一点但它会完成不必要的工作-迭代整个集合,而我需要在第一次出现时停止。但我想尝试使用Contains()带有谓词,例如foo=>foo.Bar=="Bar".当前IEnumerable.Contains有两个签名:IEnumerable.Contains(T)IEnumerable.Contains(T,IEqualityComparer)所以我必须指定一些变量来检查:varcollection=newList(){foo,bar};collecti

c# - 从 .NET 词典中删除与谓词匹配的多个项目的最佳方法?

我需要从字典中删除多个项目。一个简单的方法如下:Listkeystoremove=newList();foreach(KeyValuePairkinMyCollection)if(k.Value.Member==foo)keystoremove.Add(k.Key);foreach(stringsinkeystoremove)MyCollection.Remove(s);我不能直接删除foreachblock中的项目的原因是这会抛出异常(“Collectionwasmodified...”)我想做以下事情:MyCollection.RemoveAll(x=>x.Member==foo)

c# - 什么是 C# 中的谓词?

这个问题在这里已经有了答案:WhatisaPredicateDelegateandwhereshoulditbeused?(10个答案)关闭8年前。我对使用谓词还很陌生,刚刚学会了如何写:Predicatepre=delegate(inta){a%2==0};谓词会返回什么,它在编程时有什么用?