Linq并试图加入一个let语句的结果

时间:2011-10-20 15:03:30

标签: c# linq

我正在尝试使用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方法是不可用的?

1 个答案:

答案 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
              };