我有一个资产的通用列表(List<Asset>
),其中一个资产属性叫做Tags,它是一个字符串列表
如何进行Linq查询以获取不同的标记列表。我试过了
assetList.Select(a => a.Tags).Distinct()
但这会返回IEnumerable<List<string>>
而不是IEnumerable<string>
答案 0 :(得分:1)
你很亲密。您需要使用Enumerable.SelectMany
选择所有标记并将其展平为一个序列:
assetList.SelectMany(a => a.Tags).Distinct()
答案 1 :(得分:0)
assetList.SelecMany(a => a.Tags).Distinct() . correct it
答案 2 :(得分:0)
Select
只会按原样获取对象,而Tags
是一个列表,因此需要列表。如果您需要这些列表中的项目,则必须将它们展平为一个列表,然后继续执行其他操作。
assetList.SelectMany(a => a.Tags).Distinct();
来自SelectMany
PetOwner[] petOwners =
{ new PetOwner { Name="Higa, Sidney",
Pets = new List<string>{ "Scruffy", "Sam" } },
new PetOwner { Name="Ashkenazi, Ronen",
Pets = new List<string>{ "Walker", "Sugar" } },
new PetOwner { Name="Price, Vernette",
Pets = new List<string>{ "Scratches", "Diesel" } } };
IEnumerable<string> query1 = petOwners.SelectMany(petOwner => petOwner.Pets);
生成以下列表
Scruffy,Sam,Walker,Sugar,Scratches,Diesel