我正在尝试使用linq以避免在DataSet中对DataRows进行foreach:
var results = from dataRow in DataRows
let MoreData = func(dataRow.ID)
join moreDataRow in MoreData on dataRow.ID2 = moreDataRow.ID2
select new
{
ID1 = dataRow.ID,
ID2 = dataRow.ID2,
ID3 = dataRow2.ID3
};
我想完成类似上面的操作,但linq不能将MoreData用作join语句的一部分。如果我无法做到这一点,我可能会在DataRows上做一个foreach并从那里开始。
在迭代元素然后执行从原始数据到新生成的数据的连接之前,是否有一种连接数据的linqy方法是不可用的?
答案 0 :(得分:6)
join
子句必须采用完整的集合 - 而不是取决于当前行的内容。您可以使用多个from
语句:
var results = from dataRow in DataRows
from moreDataRow in func(dataRow.ID)
where dataRow.ID2 == moreDataRow.ID2
select new
{
ID1 = dataRow.ID,
ID2 = dataRow.ID2,
ID3 = dataRow2.ID3
};