[英]LINQ using C# question
我有一個List<T>
,它包含一些用戶定義的類數據。
我想找到2個數據字段組合的唯一實例。
例如,如果條目包含字段名稱和年齡,我希望名稱和年齡組合的唯一案例,例如Darren 32,只應檢索一次,即使它在列表中多次。
這可以用LINQ實現嗎?
謝謝。
您只需要提取這些數據字段並使其唯一:
var result = list
.Select(x => new { Age = a.Age, Name = x.Name})
.Distinct();
這將創建一個包含Age和Name屬性的匿名類型的IEnumerable。
如果您需要查找唯一數據背后的項目,則需要GroupBy
。 這將為列表提供每組后面的單個項目。
var result = list
.GroupBy(x => new { Age = a.Age, Name = x.Name});
foreach (var uniqueItem in result )
{
var age = uniqueItem.Key.Age;
var name = uniqueItem.Key.Name;
foreach (var item in uniqueItem)
{
//item is a single item which is part of the group
}
}
myList.Select(l => new { l.Name, l.Age })
.Distinct()
.ToDictionary(x => x.Name, x => x.Age)
看看Distinct
擴展方法
簡單:
var people = new List<Person>();
// code to populate people
var uniqueNameAges =
(from p in people
select new { p.Name, p.Age }).Distinct();
然后到字典:
var dictionary =
uniqueNameAges
.ToDictionary(x => x.Name, x => x.Age);
或者查找(非常類似於Dictionary<string, IEnumerable<int>>
在這種情況下為Dictionary<string, IEnumerable<int>>
):
var lookup =
uniqueNameAges
.ToLookup(x => x.Name, x => x.Age);
如果你有一個名為“John”的人有不同的年齡,那么你可以像這樣訪問它們:
IEnumerable<int> ages = lookup["John"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.