Reputation: 1531
I have a sample class like this:
SampleClass
{
string code;
int id;
string name;
}
Valid data for the class would be:
SampleClass{code= "code1", id= 1, name= "name1"}
SampleClass{code= "code1", id= 1, name= "name2"}
SampleClass{code= "code2", id= 2, name= "name1"}
SampleClass{code= "code2", id= 2, name= "name2"}
SampleClass{code= "code2", id= 2, name= "name3"}
Now the question is, by using LINQ, I need to create a TestClass collection grouped on the SampleClass "id" field.
TestClass structure is as follows:
TestClass
{
string code;
List<string> names;
}
where "names" is a list of all SampleClass "name" values grouped by "id".
Based on the above SampleClass sample data, I would have 2 TestClass objects, one for id=1 and other for id=2
Thanks in advance
Upvotes: 1
Views: 72
Reputation: 255105
var result = from c in collection
group c by c.id into g
select new TestClass {
code = g.First().code,
names = g.Select(i => i.name).ToList()
};
ps: I have no VS near now, and I hope I did not make a lot of mistakes there :-)
Upvotes: 3
Reputation: 19601
OK, if you have an IEnumerable of SampleClasses called classes
, try this:
var testClasses = classes
.GroupBy(c => c.id)
.Select(grp => new TestClass
{
code = grp.First().code,
names = grp.Select(c => c.name).ToList()
});
Upvotes: 3