Using LINQ Join Extension-Method on List & DataRowCollec

本文关键字:amp DataRowCollec List on LINQ Join Extension-Method Using | 更新日期: 2023-09-27 17:58:29

我想要JoinListDataRowCollection

到目前为止,我的代码是这样的:

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类型的列表,它包含一个字符串Property"Name",DataRowCollection来自DataTable(duh),包含2个值,索引0包含一个应该与Attribute的Name Property匹配的字符串(这就是我使用join的原因),索引1包含第二个字符串值,该值将使用重载的ctor附加到现有的Attribute。

不幸的是,这不起作用。

错误:

[…]列表<[…]>不包含Join的定义,并且最佳扩展方法重载[…]包含一些无效参数。

我根本找不到这里应该出了什么问题。

以下是属性的构造函数:

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

Using LINQ Join Extension-Method on List & DataRowCollec

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()));