Как запросить данные с динамическими столбцами - PullRequest
3 голосов
/ 10 марта 2011

Мне нужно запросить таблицу данных с неизвестными столбцами, чтобы вернуть подмножество столбцов.

Очевидно, что это легко с просмотром данных, но как насчет LINQ?

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

У меня НЕТ опыта LINQ, и то, что я видел до сих пор в SO, создает впечатление, что единственной динамической частью LINQ будет фильтр WHERE, а НЕ какие столбцы выбираются.

Я не прав?

Если да, не могли бы вы предоставить мне образец?

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Вот краткий пример того, как вы можете выбрать любые два столбца, используя Linq to DataSet:

public static void SelectRandomColumns(DataTable dataTable, string col1, string col2)
{
    // Select into an anonymous type here, but you could
    // select into a custom class
    var query = from row in dataTable.AsEnumerable()
                select new
                {
                    p1 = row[col1],
                    p2 = row[col2]
                };

    // Do whatever you need to do with the new collection of items
    foreach (var item in query)
    {
        Console.WriteLine("{0}: {1}, {2}: {3}", col1, item.p1, col2, item.p2);
    }           
}

Если вам нужно выбрать случайное количество столбцов, то это будет немного сложнее, нонадеюсь, это направит вас в правильном направлении.

1 голос
/ 10 марта 2011

Я не использовал его, но библиотека Dynamic LINQ, поставляемая с .NET 3.5 / VS2008, позволяет вам использовать предложения выбора на основе строк. Вот ссылка на блог Скотта Гатри об этом (которая также включает ссылки для загрузки библиотеки).

Изображение из блога Скотта показывает пример динамического выражения LINQ и показывает, что каждое основное предложение выражения может быть сгенерированной строкой.

enter image description here

Надеюсь, это поможет!

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