我想要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类型的列表,它包含一个字符串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;
}
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()));