以下目前正在运行,但我需要应用一个我无法实现的WHERE子句。当前代码如下所示。我的尝试显示在当前代码行的正下方。编译器抱怨“无法转换表达式IEnumerablestring,double>返回类型'bool'”。有什么建议!? 非常感谢,
工作代码
return new GroupedDataCollection(data.SummaryValuations.Select(d => new GroupedData(d)));
尝试
return new GroupedDataCollection(data.SummaryValuations.Where(x => x.Values.Where(y => y.Value.ContainsKey(filter))).Select(d => new GroupedData(d)));
基础结构
public class GroupedData
{
private SummaryValuation valuation;
public GroupedData(SummaryValuation valuation)
{
this.valuation = valuation;
}
}
public class SummaryValuationGroup
{
public string Grouping { get; set; }
public SummaryValuation[] SummaryValuations { get; set; }
}
public class SummaryValuation : ISummaryValuation
{
public SummaryValuation(DateTime valuationDate, SummaryGroup[] groups, Dictionary<string,Dictionary<string,double>> stuff)
{
....
}
}
答案 0 :(得分:0)
你可以试试这个:
return new GroupedDataCollection(
data.SummaryValuations.Values.SelectMany(subKeyPair => subKeyPair)
.Where(keyPair => keyPair.Key == filter)
.Select(keyPair => new GroupedData(keyPair.Value));
您应该展平子词典,然后使用其中的位置。 (我想我终于明白了)
答案 1 :(得分:0)
您的代码:
return new GroupedDataCollection(data.SummaryValuations.Where(x => x.Values.Where(y => y.Value.ContainsKey(filter))).Select(d => new GroupedData(d)));
获取值包含过滤器的所有键/值对:
return new GroupedDataCollection(data.SummaryValuations.Where(x => x.Values.Any(y => y.Value.ContainsKey(filter))).Select(d => new GroupedData(d)));
如果这不是你想要的;请添加类型信息并明确说明您要实现的目标。