let's have following datatable:
equipmentid serialnum filename ----------- --------- -------- 441573 05-335-03 2041165.jpg 441573 05-335-03 2041166.jpg 441573 05-335-03 2041167.jpg 441193 52005088 2536398.jpg i want group data in way 441573 single data instance array (or list) of filenames. data in end should this:
{equipmentid: 441573, serialnum: 05-335-03, filename:{2041165.jpg, 2041166.jpg, 2041167.jpg}}, {equipmentid: 441193, serialnum: 52005088, filename:{2536398.jpg}} i tried this:
var groupedequipment = e in equipment.asenumerable() group e e.field<int>("equipmentid"); but brings line each filename. want filenames grouped within equipmentid data shown.
any ideas? question asked wrong way, didn't know how going word it.
once groupby data can use regular linq functions select whatever need. in case example using string.join single string can write console.
the x.select(y => y.filename) line magic comes from. that's line selects items in group , performs operation on them.
class equpimententry { public int equpimentid { get; set; } public string serialnumber { get; set; } public string filename { get; set; } } list<equpimententry> entries = new list<equpimententry>() { new equpimententry { equpimentid = 441573, serialnumber = "05-335-03", filename = "2041165.jpg" }, new equpimententry { equpimentid = 441573, serialnumber = "05-335-03", filename = "2041166.jpg" }, new equpimententry { equpimentid = 441573, serialnumber = "05-335-03", filename = "2041167.jpg" }, new equpimententry { equpimentid = 441193, serialnumber = "52005088", filename = "2536398.jpg" }, }; var groupedequipments = entries .groupby(x => x.equpimentid) //group id .select(x => new //make anonymous type data { equpimentid = x.key, //this line take filenames in group , put ", " between them. //this returns single string filenamelist = string.join(", ", x.select(y => y.filename)) }); //foreach group, write console (for example) foreach (var group in groupedequipments) { system.console.writeline(group.equpimentid + ":" + group.filenamelist); } this outputs following:
441573:2041165.jpg, 2041166.jpg, 2041167.jpg 441193:2536398.jpg note: example groups equipmentid. can add multiple groupby elements if needed , accessible key property in later methods.
Comments
Post a Comment