C#学习教程:获取与我的linq匹配的行的索引分享


获取与我的linq匹配的行的索引

我有一个linq语句,我想知道是否有可能获得与我的陈述相符的行的标记? 这里是:

var result = list3.Where(middle => list4.Any(x => x == middle.Middle.category1)).Select(obj => new { obj, dt = DateTime.ParseExact(obj.LeftColumn, dateFormat, CultureInfo.InvariantCulture) }) .Where(x => x.dt >= datetimepickerChoice1 && x.dt  x.obj).ToList(); 

您可以使用Select (或Where )的重载,它也会调用元素的索引:

 var result = list3.Select((middle, index) => new{ middle, index }) .Where(x => list4.Any(xx => xx == x.middle.Middle.category1)) .Select(x => new { x.middle, x.index, dt = DateTime.ParseExact(x.middle.LeftColumn, dateFormat, CultureInfo.InvariantCulture) }) .Where(x => x.dt >= czas11 && x.dt <= czas22) .Select(x => x.index) .ToList(); 

附注:考虑将变量名更改为更有意义。 这是不可读的。

你的意思是?

 var result = list3.Where(middle => list4.Any(x => x == middle.Middle.category1)) .Select(obj => new { obj, dt = DateTime.ParseExact(obj.LeftColumn, dateFormat, CultureInfo.InvariantCulture) }) .Where(x => x.dt >= czas11 && x.dt <= czas22) .Select((x,index) =>new{ x.obj,Index=index}).ToList(); 

另请注意,如果要经常搜索与谓词匹配的项的指示,则可能值得编写一个非常简单的扩展方法:

 public static class IEnumerableExt { public static IEnumerable FindIndices(this IEnumerable self, Predicate predicate) { int i = 0; foreach (var element in self) { if (predicate(element)) yield return i; ++i; } } } 

您可以这样称呼:

上述就是C#学习教程:获取与我的linq匹配的行的索引分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 var result = list3.FindIndices(x => list4.Any(xx => xx == x.middle.Middle.category1)); 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031566.html

发表评论

邮箱地址不会被公开。 必填项已用*标注