草庐IT

c# - 当模棱两可地使用 IEnumerable 时,Linq 函数会给出奇怪的编译错误 - 可能的解决方法?

给定类似于以下的代码(在实际用例中有实现):classAnimal{publicboolIsHungry{get;}publicvoidFeed(){}}classDog:Animal{publicvoidBark(){}}classAnimalGroup:IEnumerable{publicIEnumeratorGetEnumerator(){thrownewNotImplementedException();}IEnumeratorIEnumerable.GetEnumerator(){thrownewNotImplementedException();}}classAnimalG

c# - 对象内对象的 Entity Framework LINQ 表达式

编辑这个问题,希望让它更清楚。我们首先设置了EntityFramework代码。为了示例的目的,我简化了两个类,实际上还有大约10多个类类似于“Record”,其中Item是一个导航属性/外键。项目类别:publicclassItem{publicintId{get;set;}publicintAccountId{get;set;}publicListUserItemMappings{get;set;}publicListGroupItemMappings{get;set;}}记录类:publicclassRecord{publicintItemId{get;set;}publicIt

c# - 我在这个谓词链中缺少什么?

注意:就在发布这个问题之前,我突然想到有一种更好的方法来完成我想要完成的事情(我觉得这很愚蠢):IEnumerablecheckedItems=ProductTypesList.CheckedItems.Cast();filter=p=>checkedItems.Contains(p.ProductType);好吧,是的,我已经意识到了这一点。但是,无论如何我都会发布这个问题,因为我仍然不太明白为什么我(愚蠢地)尝试做的事情没有奏效。我认为这会非常容易。原来这让我很头疼。基本思路:在CheckedListBox中显示所有ProductType属性值被选中的项目。实现:privateFu

c# - NHibernate 高效删除使用 LINQ Where 条件

有一个NHibernate的存储库,带有这样的LINQ查询varq=fromxinSomeIQueryablewherex.A1==a1&&x.B1==b1selectx;是否有解决方案如何获取此WHERE过滤器并将其应用于“一次性删除”,这似乎只能通过HQL实现:varcmd=string.Format("deletefromSomeEntitywherex.A1='{0}'andx.B1={1}",a1,b1);session.CreateQuery(cmd).ExecuteUpdate(); 最佳答案 现在可以使用Nhiber

c# - 从列表中选择 Lambda 或 linq

我正在尝试根据集合对象的ID从linq中的集合中进行选择。List>master=newList>();Listm1=newList();Listm2=newList();master.Add(m1);master.Add(m2);m1.Add(newmyobject{name="n1",id=1});m1.Add(newmyobject{name="n2",id=2});m1.Add(newmyobject{name="n3",id=3});m2.Add(newmyobject{name="m1",id=1});m2.Add(newmyobject{name="m2",id=2});

c# - Moq - 存储库中的 Linq 表达式 - 在设置中指定表达式

我的界面上有一个方法,如下所示:TGetSingle(Expression>criteria);我正在尝试模拟这样的设置(我意识到这行不通):_mockUserRepository=newMock>();_mockUserRepository.Setup(c=>c.GetSingle(x=>x.EmailAddress=="a@b.com")).Returns(newUser{EmailAddress="a@b.com"});我意识到我向设置传递了错误的参数。看完thisanswer我可以通过传递表达式来让它工作,就像这样:_mockUserRepository.Setup(c=>c.

c# - Linq To Sql 仅比较时间

如何只比较DateTime对象的时间而不获取以下内容错误:Anexceptionoftype'System.NotSupportedException'occurredinmscorlib.dllbutwasnothandledinusercodeAdditionalinformation:Thespecifiedtypemember'TimeOfDay'isnotsupportedinLINQtoEntities.Onlyinitializers,entitymembers,andentitynavigationpropertiesaresupported.我的代码:vardate=

c# - Linq 缓慢具体化复杂查询

我经常发现,如果我在Linq查询中有太多连接(无论是使用EntityFramework还是NHibernate)和/或生成的匿名类的形状太复杂,Linq需要很长时间才能实现结果设置为对象。这是一个一般性问题,但这里有一个使用NHibernate的具体示例:varlibraryBookIdsWithShelfAndBookTagQuery=(fromshelfinsession.Query()joinsbttrefinsession.Query()onshelf.ShelfIdequalssbttref.ShelfIdjoinbookTaginsession.Query()onsbttr

c# - 查询 "Memory"的 LINQ

是否LINQ有办法在查询时“记住”它以前的查询结果吗?考虑以下情况:publicclassFoo{publicintId{get;set;}publicICollectionBars{get;set;}}publicclassBar{publicintId{get;set;}}现在,如果两个或更多Foo具有相同的Bar集合(无论顺序是什么),它们被认为是相似Foo.例子:foo1.Bars=newList(){bar1,bar2};foo2.Bars=newList(){bar2,bar1};foo3.Bars=newList(){bar3,bar1,bar2};在上面的例子中,foo

c# - Linq 性能 : should I first use `where` or `select`

我在内存中有一个很大的List,来自一个具有大约20个properties的类。我想仅根据一个property过滤此列表,对于特定任务我只需要该property的列表。所以我的查询是这样的:data.Select(x=>x.field).Where(x=>x=="desiredvalue").ToList()先使用Select还是使用Where哪个性能更好?data.Where(x=>x.field=="desiredvalue").Select(x=>x.field).ToList()如果这与我将数据保存在内存中的数据类型或字段类型有关,请告诉我。请注意,我也需要这些对象来执行其他任