我正在尝试通过删除我的自定义词典中的一些项目来过滤我得到的结果。因此,如果有多个具有相同值的项目,我希望只有一个样本。
这是我存储值的自定义类:
public class ValuePair
{
public string Text { get; set; }
public string Value { get; set; }
}
以下是我检索值的方法:
List<ValuePair> items = GetResults(db)
.AsEnumerable()
.Distinct()
.Select(v => new TextValuePair
{
Text = ToTitleCase(v.NameOfTown),
Value = v.NameOfTown
})
.ToList();
我想知道如何刷新结果并只获取按值过滤的项目的一个样本,而不是键。
知道我该怎么做吗?
提前致谢,Laziale
答案 0 :(得分:1)
您可以使用此https://code.google.com/p/morelinq/ librarry
它有一个名为
DistictBy
然后你可以
List<ValuePair> items = GetResults(db)
.AsEnumerable()
.Select(v => new TextValuePair
{
Text = ToTitleCase(v.NameOfTown),
Value = v.NameOfTown
}).DisrinctBy(c=>c.Value)
.ToList();
答案 1 :(得分:1)
您可以按Value
进行分组,然后获取分组项目的第一项。
List<ValuePair> items = GetResults(db)
.AsEnumerable()
.Distinct()
.Select(v => new TextValuePair
{
Text = ToTitleCase(v.NameOfTown),
Value = v.NameOfTown
})
.GroupBy(x => x.Value)
.Where(x => x.Key == "filter") // filter by Value (the prop name is Key)
.Select(x => x.First())
.ToList();