Linq查询从每个列表列表中获取一行

时间:2017-03-28 15:49:56

标签: c# asp.net-mvc linq

我有一个对象列表,这些对象都有一个与它们关联的非唯一tablename属性,但我想自己创建第二个名称列表。

示例数据:

{
"TableName": "CodeTable1",
"ID": 7,
"Value": "7 ",
"CodeStatus": "A",
"SiteLocationID": null,
},
{
"TableName": "CodeTable2",
"ID": 6,
"Value": "string value example",
"CodeStatus": "A",
"SiteLocationID": 1,
},
{
"TableName": "CodeTable2",
"ID": 18,
"Value": "different value etc",
"CodeStatus": "A",
"SiteLocationID": 2,
}

最终我想填充一个下拉列表,其中只有2个选项是CodeTable1和CodeTable2。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

使用Enumerable.Distinct仅从表名中获取唯一值:

list.Select(x => x.TableName).Distinct()

答案 1 :(得分:1)

你想要一个选择和一个独特的

var items = myList.Select(x => x.TableName).Distinct();

答案 2 :(得分:0)

您可以在TableName属性上对列表进行分组,然后投影每个组的键:

var tableNames = list.GroupBy(x=.x.TableName)
                     .Select(g=>g.Key);

这将为您提供唯一的TableName列表。