使用LINQ Join Extension-Method on List& DataRowCollection

时间:2011-06-07 12:24:25

标签: c# linq list join datatable

我想Join ListDataRowCollection

到目前为止我的代码看起来像这样:

attrList.Join<Attribute, DataRow, string, Attribute>(
    dt.Rows,
    attr => attr.Name,
    dataRow => dataRow[0].ToString(),
    (a, b) => new Attribute(a.Name, a.Value, b[1].ToString()));

attrList是一个MyProject.Attribute类型的List,它包含一个字符串-Property“Name”,DataRowCollection来自DataTable(duh)并包含2个值,Index 0包含一个应该与Name-Property匹配的字符串属性(这就是我使用join的原因)和索引1包含第二个字符串值,它将使用重载的ctor附加到现有属性。

不幸的是,这不起作用。

错误:

  

[...]列表与LT; [...]&GT;不包含Join的定义和最佳扩展方法重载[...]有一些无效的参数。

我根本找不到这里的错误。

这是属性的构造函数:

public Attribute(string name, string value, string control)
{
    this.name = name;
    this.value = value;
    this.control = control;
}

1 个答案:

答案 0 :(得分:2)

DataTable.Rows不是通用的,即它没有实现IEnumerable<T>所以你不能在Linq中使用它,请尝试以下:

attrList.Join<Attribute, DataRow, string, Attribute>(
            dt.AsEnumerable(),
            attr => attr.Name,
            dataRow => dataRow[0].ToString(),
            (a, b) => new Attribute(a.Name, a.Value, b[1].ToString()));