Как я могу создать динамический запрос LINQ в C# с возможным, который несколько группируют пунктами?

Я был программистом в течение нескольких лет теперь, но я - a
вновь прибывший к LINQ и C# так прощает мне, если мой вопрос звучит
особенно глупый.

Я надеюсь, что кто-то может указывать на меня в праве
направление. Моя задача состоит в том, чтобы придумать способность сформировать a
динамичный несколько группируются запросом linq в рамках c# использования сценария
универсальный список как источник.

Например, скажите, что у меня есть список, содержащий несколько объектов со следующим
структура:

FieldChar1 - character
FieldChar2 - character
FieldChar3 - character
FieldNum1 - numeric
FieldNum2 - numeric

Вкратце я хочу смочь создать запрос LINQ это
суммирует FieldNum1 и FieldNum2, сгруппированный любым, два или
все три из полей FieldChar, которые будут решены в
время выполнения в зависимости от пользовательских требований, а также выбора полей FieldChar в том же запросе.

У меня есть dynamic.cs в моем проекте, какой icludes метод расширения GroupByMany, но я должен признать, что я действительно не уверен, как ввести их в эксплуатацию. Я могу получить желаемые результаты, если я использую запрос с зашитой группой запросами, но не динамично.

Извинения за любую ошибочную номенклатуру, я плохо знаком с этим языком, но любой совет приветствовался бы.

Большое спасибо

Alex

6
задан Venemo 24 May 2010 в 18:27
поделиться

2 ответа

GroupBy(groupByName + " " + groupByDirection, new {})

Так что вы можете передать groupByName и groupByDirection, когда вы переходите по ним, вы можете увидеть что-то вроде

GroupBy("lastName desc", new{})

или

GroupBy("firstName asc", new{})

0
ответ дан 17 December 2019 в 22:11
поделиться

Вот базовый GroupBy пример. Допустим, у нас есть простой класс, такой как этот:

public class Person
{
    public string Name { get; set; }

    public int Age { get; set; }

    public char Sex { get; set; }
}

Тогда вы можете использовать GroupBy вот так:

var people = new List<Person> {
    new Person { Name = "Joe", Age = 30, Sex = 'M' },
    new Person { Name = "Liz", Age = 22, Sex = 'F' },
    new Person { Name = "Jim", Age = 22, Sex = 'M' },
    new Person { Name = "Alice", Age = 30, Sex = 'F' },
    new Person { Name = "Jenny", Age = 22, Sex = 'F' }
};
var groups = people.GroupBy(p => p.Age);

foreach (var group in groups)
{
    foreach (var person in group)
        Console.WriteLine(person.Name + " - " + person.Age);
}

Что касается группировки по нескольким свойствам, смотрите здесь:
http://weblogs.asp.net/zeeshanhirani/archive/2008/05/07/group-by-multiple-columns-in-linq-to-sql.aspx
LINQ TO DataSet: Множественная группировка по таблице данных

В принципе, это тот же синтаксис с анонимным типом, например:

var groups = people.GroupBy(p => new { p.Age, p.Sex });

Обратите внимание, что вы можете искать использование нескольких OrderBys:

var query = people.OrderBy(p => p.Age).ThenBy(p => p.Sex);
//You can have unlimited ThenBy's

Также обратите внимание, что результат последнего оператора GroupBy и результат этого оператора OrderBy - НЕ одно и то же.

1
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: