C# 如何获取IEnumerable类型的属性值并赋值给变量
实现方法
首先你需要先引入Linq命名空间,才能使用IEnumerable<T>对应的查询扩展方法:
using System.Linq;
List<T>的Find是自带的实例方法,而IEnumerable<T>没有内置该方法,所以需要借助System.Linq提供的扩展方法实现相同逻辑。
场景1:确认一定存在匹配的Attendance对象
First方法的行为和List的Find方法完全一致,会返回序列中第一个满足条件的元素,找不到就抛出异常,对应代码如下(已修正原代码中Cell应为Cells的笔误):
dgview.Rows[rowindex].Cells[cellindex].Value = myEnumerable.First(x => x.Date == datevalue).SHIFT;
场景2:可能不存在匹配的Attendance对象
如果你不确定是否有匹配项,建议用FirstOrDefault避免抛出异常,找不到匹配项时会返回引用类型的默认值null,再做空判断处理即可:
var targetAttendance = myEnumerable.FirstOrDefault(x => x.Date == datevalue); dgview.Rows[rowindex].Cells[cellindex].Value = targetAttendance?.SHIFT ?? null;
注意事项
如果你使用的是延迟执行的IEnumerable实现(比如EF Core的查询结果),频繁调用查询方法会触发多次迭代,建议先通过ToList()/ToArray()转为内存集合缓存后再操作,避免额外的性能开销。
内容的提问来源于stack exchange,提问作者yam cantorna
相关产品推荐
相关产品推荐

