草庐IT

IEnumerable

全部标签

c# - 测试两个 IEnumerable<T> 是否具有相同频率的相同值

我有两个多重集,都是IEnumerables,我想比较它们。string[]names1={"tom","dick","harry"};string[]names2={"tom","dick","harry","harry"};string[]names3={"tom","dick","harry","sally"};string[]names4={"dick","harry","tom"};希望names1==names4返回true(显然self==self返回true)但所有其他组合都返回false。什么是最有效的方法?这些可以是大量的复杂对象。我看着做:vara=name1.o

c# - 多次读取 IEnumerable

假设我有一些代码:varitems=ItemsGetter.GetAllItems().Where(x=>x.SomeProperty>20);intsum1=items.Sum(x=>x.SomeFlag==true);例如,我需要稍后在代码中从items集合中获取一些其他金额。intsum2=items.Sum(x=>x.OtherFlag==false);所以我的问题是:可以多次调用IEnumerable上的Linq方法吗?也许我应该在枚举器上调用Reset()方法或使用ToList方法从项目中创建列表? 最佳答案 嗯,这真的

c# - IEnumerable<T> 到 CSV 文件

我正在从LINQ查询中获取类型为IEnumerable的var的结果我想根据LINQ的结果创建一个CSV文件我从下面的查询中得到结果varr=fromtableinmyDataTable.AsEnumerable()orderbytable.Field(para1)grouptablebynew{Name=table[para1],Y=table[para2]}intoResultTableselectnew{Name=ResultTable.Key,Count=ResultTable.Count()}; 最佳答案 检查这个publ

c# - Fluent Assertions 能否对 IEnumerable<string> 使用不区分字符串的比较?

我有一对列表,我正在尝试使用FluentAssertions进行比较。我可以很容易地编写比较代码,但我想使用FluentAssertions,这样我就可以获得在测试失败消息中显示的原因。到目前为止,我所看到的一切似乎都在使用默认的Object.Equals比较,它区分大小写。我似乎无法将IComparer传递给Equal或Contains方法,还有其他方法吗?[TestMethod()]publicvoidfoo(){varactual=newList{"ONE","TWO","THREE","FOUR"};varexpected=newList{"One","Two","Three"

c# - IEnumerable<T> 线程安全?

我有一个填充List的主线程.此外,我创建了一个将在不同线程上执行的对象链,需要访问列表。原始列表生成后将永远不会被写入。我的想法是将列表传递为IEnumerable到在其他线程上执行的对象,主要是为了不允许那些实现这些对象的人错误地写入列表。换句话说,如果保证不写入原始列表,多线程使用.Where是否安全?或foreach在IEnumerable上?如果原始集合从未更改,我不确定迭代器本身是否是线程安全的。 最佳答案 IEnumerable无法修改。那么什么可以是非线程安全的呢?(如果您不修改实际的List)。对于非线程安全,您需

c# - 将列表类型转换为 IEnumerable 接口(interface)类型

我有一个Listpersonlist;我怎样才能转换成IEnumerableiPersonListPerson实现IPerson接口(interface) 最佳答案 如果您使用的是.NET4.0或更高版本,您可以只进行隐式转换:IEnumerableiPersonList=personlist;//orexplicit:variPersonList=(IEnumerable)personlist;这在IEnumerable中使用了通用逆变-即因为你只能从IEnumerable中得到一些out,你可以隐式转换IEnumerable至I

c# - LINQ:在 GridView 中查找所有选中的复选框

考虑下面迭代遍历GridView的当前算法的行查找是否包含Checkbox被选中/选中。ListcheckedIDs=newList();foreach(GridViewRowmsgRowinmessagesGrid.Rows){CheckBoxchk=(CheckBox)msgRow.FindControl("chkUpdateStatus");if(chk.Checked){//wewanttheGridViewRow'sDataKeyvaluecheckedMsgIDs.Add(int.Parse(messagesGrid.DataKeys[msgRow.RowIndex].Va

c# - 从枚举转换为 IEnumerable

你能帮我修改这段代码吗usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Reflection;namespaceNTSoftHRM{//------------------------------------------------------------------------publicclassEnumValueList:IEnumerable{//--------------------------------------------------------------

c# - 将 IEnumerable<int> 转换为 int[]

如何在C#中将IEnumerable变量转换为int[]变量? 最佳答案 如果您能够使用System.Linq,请使用.ToArray()扩展方法如果您使用的是.Net2,那么您可以只是扯掉System.Linq.Enumerable实现.ToArray扩展方法的方式(我已经提升了代码这里几乎是逐字逐句-它需要Microsoft®吗?):structBuffer{internalTElement[]items;internalintcount;internalBuffer(IEnumerablesource){TElement[]a

c# - 查明 IEnumerable<> 是否具有唯一值的最佳方法

我有很多代码可以做这样的事情boolGetIsUnique(IEnumerablevalues){returnvalues.Count()==values.Distinct().Count;}有没有更好更快更好的方法来做到这一点? 最佳答案 我会让它成为一个很好的扩展方法publicstaticboolIsUnique(thisIEnumerablelist){varhs=newHashSet();returnlist.All(hs.Add);}检查是否所有项目都可以添加到HashSet。