模型是:
public class Word
{
public int Id { get; set; }
public IList<UsedCount> UsedCount { get; set; }
}
public class UsedCount
{
public int Id { get; set; }
public string Key { get; set; }
public int Value { get; set; }
}
有语言列表:
// Actually there are more then 3 langs used
List<string> langList = new List<string> { "en", "pl", "de" };
单词列表
List<Word> words = new List<Words>();
我计算每种语言在每个单词中使用了多少次。 我需要使所有单词总共使用超过100次,而与哪种语言无关:
renewingIteration = Words.Where(p => (
p.UsedCount.FirstOrDefault(count => count.Key == langList[0]).Value +
p.UsedCount.FirstOrDefault(count => count.Key == langList[1]).Value +
p.UsedCount.FirstOrDefault(count => count.Key == langList[2]).Value
//... and so on
> 100)
如何使它更简单并避免手动编写langList [0],langList [1] ...?
答案 0 :(得分:2)
Words.Where(p => p.UsedCount.Sum(u => u.Value) > 100)
假设您不需要明确排除每种语言的第一个条目,那么您似乎正在寻找它。
请注意,在FirstOrDefault( ).Value
上使用First( ).Value
几乎没有意义-后者实际上会引发更有意义的异常。