我想Join
List
和DataRowCollection
,
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;
}
答案 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()));