我正在尝试使用LINQ,我需要一些lambda表达式的帮助。
我有IGrouping<DateTime, Option>
。 Option
类有多个变量,如Price
,Root
等。
我尝试仅选择具有不同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.
}
答案 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())
{
//...
}