Я был программистом в течение нескольких лет теперь, но я - 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
GroupBy(groupByName + " " + groupByDirection, new {})
Так что вы можете передать groupByName и groupByDirection, когда вы переходите по ним, вы можете увидеть что-то вроде
GroupBy("lastName desc", new{})
или
GroupBy("firstName asc", new{})
Вот базовый 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 });
Обратите внимание, что вы можете искать использование нескольких OrderBy
s:
var query = people.OrderBy(p => p.Age).ThenBy(p => p.Sex);
//You can have unlimited ThenBy's
Также обратите внимание, что результат последнего оператора GroupBy и результат этого оператора OrderBy - НЕ одно и то же.