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

She*_*byZ 0 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
              };
Run Code Online (Sandbox Code Playgroud)

我想完成类似上面的操作,但是linq不能将MoreData用作join语句的一部分.如果我无法做到这一点,我可能会在DataRows上做一个foreach并从那里开始.

是否有一种连接数据的linqy方法,在迭代元素然后执行从原始数据到新生成的数据的连接之前,这些数据是不可用的?

Jon*_*eet 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
              };
Run Code Online (Sandbox Code Playgroud)