Linq选择具有来自IGrouping的变量的不同值的多个

时间:2018-02-28 18:55:37

标签: c# linq

我正在尝试使用LINQ,我需要一些lambda表达式的帮助。

我有IGrouping<DateTime, Option>Option类有多个变量,如PriceRoot等。

我尝试仅选择具有不同Option值的foreach中的Root个对象,我不知道如何获取它。我试过这样做:

IGrouping<DateTime, Option> optvalues;
foreach (var symbol in optvalues.SelectMany(t => t.Root.Distinct()))
{ 
    //This is returning some random value “85 S” in rootdiff.
}

3 个答案:

答案 0 :(得分:0)

听起来你需要DistinctBy

foreach (var symbol in optvalues.DistinctBy(opt => opt.Root)) {
}

这是一种扩展方法:

public static IEnumerable<T> DistinctBy<T, TKey>(this IEnumerable<T> src, Func<T, TKey> keyFun) {
    //      return src.GroupBy(keyFun).Select(g => g.FirstOrDefault());  // to defer execution
    var seenKeys = new HashSet<TKey>();
    foreach (T e in src)
        if (seenKeys.Add(keyFun(e)))
            yield return e;
}

答案 1 :(得分:0)

所以你刚刚将10应用于错误的值

Distinct

答案 2 :(得分:0)

    foreach (var symbol in optvalues.Select(t => r.Root).Distinct())
    { 
       //...
    }