C# 如何对匿名类型集合进行排序
使用Linq to SQL I从数据库匿名集合获取。该集合如下所示:C# 如何对匿名类型集合进行排序,c#,linq,C#,Linq,使用Linq to SQL I从数据库匿名集合获取。该集合如下所示: 1. { PS_DID = 523, ID = 2, TITLE = "Station1", ACTIVE = 1, status = null, validFrom = null } 2. { PS_DID = 402, ID = 4, TITLE = "Station2", ACTIVE = 1, status = null, validFrom = null } 3. { PS_DID = 8, ID = 152, TI
1. { PS_DID = 523, ID = 2, TITLE = "Station1", ACTIVE = 1, status = null, validFrom = null }
2. { PS_DID = 402, ID = 4, TITLE = "Station2", ACTIVE = 1, status = null, validFrom = null }
3. { PS_DID = 8, ID = 152, TITLE = "Station3", ACTIVE = 1, status = 5, validFrom = {5/26/2015 12:00:01 AM} }
4. { PS_DID = 8, ID = 152, TITLE = "Station3", ACTIVE = 1, status = 5, validFrom = {5/26/2015 12:00:01 AM} }
5. { PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1, status = 5, validFrom = {1/12/2016 12:00:01 AM} }
6. { PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1, status = 5, validFrom = {12/1/2015 12:00:01 AM} }
7. { PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1, status = 3, validFrom = {3/20/2016 12:00:01 AM} }
8. { PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1, status = 1, validFrom = {5/19/2016 11:07:00 PM} }
9. { PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1, status = 1, validFrom = {5/20/2016 3:50:00 PM} }
我想按站点ID订购匿名集合,其中每个站点将包括一个不同状态的列表,每个状态将包括一个不同日期的列表。新集合应如下所示:
1. PS_DID = 523, ID = 2, TITLE = "Station1", ACTIVE = 1, status = null, validFrom = null
2. PS_DID = 402, ID = 4, TITLE = "Station2", ACTIVE = 1, status = null, validFrom = null
3. PS_DID = 8, ID = 152, TITLE = "Station3", ACTIVE = 1,
- status
* 5 - (validFrom = 5/26/2015 12:00:01 AM)
4. PS_DID = 13, ID = 75, TITLE = "Station4", ACTIVE = 1
- status
* 5 - validFrom
* 1/12/2016 12:00:01 AM
* 2/1/2015 12:00:01 AM
* 3 - validFrom
* 3/20/2016 12:00:01 AM
* 1 - validFrom
* 5/19/2016 11:07:00 PM
* 5/20/2016 3:50:00 PM
有人能帮我吗 您需要的是分组,您可以为此使用
Linq
您必须对输入集合进行两次分组,一次在ID
字段,然后在status
字段
var results= collection.GroupBy(g=> new {g.PS_DID, g.ID , g.TITLE, g.ACTIVE})
.OrderBy(x=>x.Key.PS_DID)
.Select(x=> new
{
PS_DID = g.Key.PS_DID,
ID = g.Key.ID,
TITLE = g.Key.TITLE,
ACTIVE = g.Key.ACTIVE,
STATUS_VALID_DATE = x.GroupBy(g=> g.status)
.Select(s=> new {
status = s.Key,
validFrom = s.Select(v=>v.validrom).ToList()
}).ToList()
});
你能提供你的LINQ代码吗?