Как я могу получить объекты из общего списка с Linq, где свойства объектов = XYZ группировка по другому свойству - PullRequest
1 голос
/ 16 апреля 2011

Я учу Linq. Я не уверен, как я могу выбрать данные из общего списка.

в следующем примере с псевдокодом мне нравится группировать в новый класс по «данным», составляя список «типа» и выбирая идентификатор (тот же идентификатор для тех же данных)

List<MyClass>

MyClass have:
-------------
string id
string type
string data

example of instances (all of this contained in a List<MyClass>

MyClass1
--------
id   = "a"
type = "a"
data = "someData1"

MyClass2
--------
id   = "a"
type = "b"
data = "someData1"

MyClass3
--------
id   = "b"
type = "c"
data = "someData2"

MyClass4
--------
id   = "b"
type = "b"
data = "someData2"

MyClass5
--------
id   = "a"
type = "c"
data = "someData1"

Мне нравится получать что-то вроде:

MyNewClassX
id    = "a"
types =  {"a","b","c"} 
data  = "someData1"

MyNewClassY
id    = "b"
types = {"c","z"}
data = "someData2"

И позже ... Мне нравится получать, например, MyNewclasses, где type = "c"

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

1 Ответ

2 голосов
/ 16 апреля 2011
var q1 = from m in list
         group m by m.data into g
         select new {g.First().id, types=g.Select(_=>_.type), data=g.Key};

//selects by type
var q2 = from m in q1
         where m.types.Contains("c")
         select m;
...