草庐IT

ienumerable

全部标签

c# - ActionResult<IEnumerable<T>> 必须返回一个 List<T>

使用ASP.NETCore2.1获取以下代码:[HttpGet("/unresolved")]publicasyncTask>>GetUnresolvedIdentities(){varresults=await_identities.GetUnresolvedIdentities().ConfigureAwait(false);returnresults.ToList();}自从GetUnresolvedIdentities()我就想到了返回IEnumerable我可以返回returnawait_identities.GetUnresolvedIdentities().Configu

c# - 使用 LINQ 创建增量值的 IEnumerable<>

我有一个时间戳列表(以滴答为单位),我想从这个列表中创建另一个表示条目之间的增量时间的列表。例如,我的主时间表如下所示:102030506070我要返回的是这个:1010201010我在这里试图完成的是通过计算标准偏差来检测输出表中的#3是否为离群值。我以前没有进行过统计,但我认为如果我在输出列表中查找普遍值并丢弃1sigma之外的任何值,这对我来说就足够了。我希望能够使用单个LINQ查询创建输出列表,但我还没有弄清楚。目前我只是用循环暴力破解它。 最佳答案 如果您运行的是.NET4.0,这应该可以正常工作:vardeltas=li

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# - 使用迭代器编写自定义 IEnumerator<T>

如何编写自定义IEnumerator需要维护一些状态并且仍然可以使用迭代器block来简化它的实现?我能想到的最好的是这样的:publicclassMyEnumerator:IEnumerator{privateIEnumerator_enumerator;publicintPosition{get;privateset;}//orsomeothercustompropertiespublicMyEnumerator(){Position=0;_enumerator=MakeEnumerator();}privateIEnumeratorMakeEnumerator(){//yield