草庐IT

c# - LINQ:确定两个序列是否包含完全相同的元素

我需要确定两个集合是否包含完全相同的元素。顺序无关紧要。例如,这两个数组应该被认为是相等的:IEnumerabledata=new[]{3,5,6,9};IEnumerableotherData=new[]{6,5,9,3}一个集合不能包含任何不在另一个集合中的元素。这可以使用内置查询运算符来完成吗?考虑到元素的数量可能从几个到数百个不等,最有效的实现方式是什么? 最佳答案 如果您想将数组视为“集合”并忽略顺序和重复项,您可以使用HashSet.SetEqualsmethod:varisEqual=newHashSet(first)

c# - 为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

我正在做一些性能测试并注意到像这样的LINQ表达式result=list.First(f=>f.Id==i).Property比慢result=list.Where(f=>f.Id==i).First().Property这似乎违反直觉。我原以为第一个表达式会更快,因为它可以在满足谓词后立即停止遍历列表,而我原以为.Where()表达式可能遍历在对结果子集调用.First()之前整个列表。即使后者确实短路,也不应该比直接使用First快,但确实如此。下面是两个非常简单的单元测试来说明这一点。在TestWhereAndFirst上进行优化编译时,比.Net和Silverlight4上的T

C# Linq Where Date Between 2 Dates

我正在尝试让我的linq语句获取两个日期之间的所有记录,但我不太确定我需要更改什么才能使其正常工作:(a.Start>=startDate&&结束日期)varappointmentNoShow=fromainappointmentsfrompinpropertiesfromcinclientswherea.Id==p.OID&&(a.Start.Date>=startDate.Date&&endDate) 最佳答案 改成varappointmentNoShow=fromainappointmentsfrompinproperties

c# - 使用 LINQ 将字符串转换为 int 数组

这个问题在这里已经有了答案:C#:IsthereaLINQwaytocreateanarrayofobjectsgivenanarrayofconstructorparameters?(2个答案)关闭4年前。我有一个函数(tointarray)可以将一个字符串转换成一个整数数组,但我对它不是很满意。它完成了这项工作,但必须有更优雅的方式来做到这一点,也许LINQ可以在这里提供帮助。不幸的是我不太擅长LINQ。有没有更好的办法?我的功能:{strings1="1;2;3;4;5;6;7;8;9;10;11;12";int[]ia=tointarray(s1,';');}int[]toin

c# - 我应该在我的 LINQ 查询中使用两个 "where"子句还是 "&&"?

在编写具有多个“and”条件的LINQ查询时,我应该编写一个包含&&的单个where子句还是多个where子句,每个条件一个?staticvoidMain(string[]args){varints=newList(Enumerable.Range(-10,20));varpositiveEvensA=fromiinintswhere(i>0)&&((i%2)==0)selecti;varpositiveEvensB=fromiinintswherei>0where(i%2)==0selecti;System.Diagnostics.Debug.Assert(positiveEvens

c# - 具有可为空总和的 Linq 查询

fromiinDb.ItemsselectnewVotedItem{ItemId=i.ItemId,Points=(fromvinDb.Voteswhereb.ItemId==v.ItemIdselectv.Points).Sum()}我收到了这个查询,但是如果没有发现异常的选票,它就会失败:ThenullvaluecannotbeassignedtoamemberwithtypeSystem.Int32whichisanon-nullablevaluetype.我假设它是因为sum返回一个int而不是一个可为null的int,给sum一个int?由于输入仅给出相同的错误,可能导致求和

c# - 在 Linq Select 中创建元组

我正在使用C#和.NETFramework4.5.1从带有EntityFramework6.1.3的SQLServer数据库中检索数据。我有这个:codes=codesRepo.SearchFor(predicate).Select(c=>newTuple(c.Id,c.Flag)).ToList();当我运行它时,我收到这条消息:OnlyparameterlessconstructorsandinitializersaresupportedinLINQtoEntities.我不知道我必须如何创建元组,因为我找到的所有示例大多都像这个。我试过这个:codes=codesRepo.Sea

c# - 使用 LINQ 的 FirstOrDefault 检查 KeyValuePair 是否存在

我有一个类型的字典Dictionary我想使用返回满足条件的第一个实例varavailable=m_AvailableDict.FirstOrDefault(p=>p.Value==0)但是,如何检查我是否真的取回了KeyValuePair?在没有编译器错误的情况下,我似乎无法使用!=或==来检查default(KeyValuePair)。有一个类似的线程here这似乎没有解决方案。我实际上能够通过获取key并检查Guid的默认值来解决我的特定问题,但我很好奇是否有使用键值对执行此操作的好方法。谢谢 最佳答案 如果你只关心存在,你可

c# - LINQ 按多个字段分组 - 语法帮助

为了按多列分组,示例2需要更正什么示例1varquery=fromcmincustgroupcmbynew{cm.Customer,cm.OrderDate}intocmsselectnew{Key1=cms.Key.Customer,Key2=cms.Key.OrderDate,Count=cms.Count()};示例2(不正确)varqry=cust.GroupBy(p=>p.Customer,q=>q.OrderDate,(k1,k2,group)=>new{Key1=k1,Key2=k2,Count=group.Count()}); 最佳答案

c# - 如何使用 LINQ 过滤字典并将其返回到相同类型的字典

我有以下字典:Dictionarydic=newDictionary();dic[1]="A";dic[2]="B";我想过滤字典的项目并将结果重新分配给同一个变量:dic=dic.Where(p=>p.Key==1);如何从相同类型[中将结果作为字典返回]?我试过了ToDictionary,但它不起作用。 最佳答案 ToDictionary是要走的路。它确实有效——您可能只是错误地使用了它。试试这个:dic=dic.Where(p=>p.Key==1).ToDictionary(p=>p.Key,p=>p.Value);话虽如此,