Как выбрать подмножество из DataTable через LINQ? - PullRequest
0 голосов
/ 16 февраля 2011

Я новичок в LINQ. У меня есть следующая DataTable

Name   Date       price1  price2
string DateTime   decimal decimal
Jan09  14.01.2009 10.0    12.0
Feb09  14.01.2009 11.0    13.0
Jan09  15.01.2009 10.0    12.5
Feb09  15.01.2009  9.0    10.0
Jan09  18.01.2009 10.0    12.5
Feb09  18.01.2009  9.0    10.0

Имя и дата являются первичными составными ключами.

Я хочу выбрать все Имена для каждой Даты, затем перебрать новую коллекцию и выбрать следующую дату.

var subCollection =  tab.Rows.Cast<DataRow>().Select(r1 => r1["Date"]).Select<string>(r2 => r2["Name"])
foreach (DataRow row in subCollection)
{
    // do something with row
}

Мое выражение Linq неверно

1 Ответ

3 голосов
/ 16 февраля 2011

Я думаю, что вы хотите сгруппировать по вашей дате, затем посмотреть на все имена для данной даты, а затем большинство на следующую.

Если это так, вы хотите использовать синтаксис группы Linq ...

var query = from row in table.AsEnumerable()
        group row by row["Date"] into g
        select g;

В Интернете можно найти множество примеров выполнения различных действий с использованием синтаксиса группы Linq. Мне очень важно понять, что вы можете группировать по нескольким столбцам и по-прежнему применять агрегатные функции, такие как Sum, Max или Count, используя следующий синтаксис:

var query = from row in table.AsEnumerable()
    group row by new { Date = row["Date"], Price1 = row["Price1"] }  into g
    select new
    {
        Date = g.Key.Date,
        Price = g.Key.Price1,
        Count = g.Count()
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...