我有一个LINQ"结果" anonymuosType,在其中,它有一些实体对象,由LINQ从EF查询。
我想利用"结果"过滤并在" newResult"的实体对象上设置一些新值。
但是我无法在" newResult"之后的.Where()之后使用ForEach()。
我可以知道我做错了吗?使用LINQ的任何替代解决方案? (我可以做简单的foreach循环来实现它,但我想通过使用LINQ来学习更多。)
var result = (from e in unmatch_epay_details
join w in DB.WatReconDetails
on e.RetTransRef equals w.RetTransRef
into a
from b in a.DefaultIfEmpty()
select new
{
ePayDetailID = e.ePayReconDetailID,
WATStatus = (b == default(WatReconDetail)) ? 0 : 1,//** if default return 0.
EpayInfo = e,
WATinfo = b
})
.OrderBy(a => a.ServerTransDateTime)
.ToList();
var newResult = result
.Where(a => a.EpayInfo.condition =="condition")
.ForEach(b => b.EpayInfo.result=="result");//I not able to use the foreach at here.
答案 0 :(得分:3)
ForEach()
不是linq,它是List<T>
上的函数(并且您正在使用IEnumerable<T>
)。
因此,请改用普通foreach
。
答案 1 :(得分:1)
正如其他人所指出的那样,ForEach适用于列表但不适用于IEnumerables。您可以定义自己的ForEach扩展,它可以像IEnumerable一样工作
public static class MyExtension
{
public static void ForEach<T>(this IEnumerable<T> data, Action<T> action)
{
foreach (T element in data)
{
action(element);
}
}
}