Использование метода расширения LINQ Join в List & DataRowCollection - PullRequest
0 голосов
/ 07 июня 2011

Я бы хотел Join a 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, который содержит строковое свойство «Name», DataRowCollection происходит из DataTable (duh) и содержит 2 значения, Index 0 содержит строку, которая должна соответствовать Name-свойству Attribute (именно поэтому я используюобъединение), а индекс 1 содержит второе строковое значение, которое будет добавлено к существующему атрибуту с использованием перегруженного ctor.

К сожалению, это не работает.

Ошибка:

[...] Список <[...]> не содержит определения для Join, а лучшая перегрузка метода расширения [...] имеет недопустимые аргументы.

Iпросто не могу найти то, что должно быть здесь неправильно.

Вот конструктор атрибута:

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

1 Ответ

2 голосов
/ 07 июня 2011

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()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...