2016-10-20 35 views
-1

的定义,我有using System.Linq;所以我想我的语法是错误的,但我不能看到它不包含“点心”

public void Count() 
{ 
    var count = _context.Objects 
     .Select(i => new { i, ViewCount = i.Relations.Sum(j => j.ViewCount) }); 
} 
+0

您是否需要i.Relations上的.ToList()? –

+2

关系是IEnumerable 还是不是?如果不是,那么你不能使用'Sum'方法或任何其他的LINQ方法。 – Christos

+3

如果'i.Relations'没有名为'Sum'的方法或扩展,那很可能与'i.Relations'的类型有关。你认为这里的任何人都知道“i.Relations”的类型比你多吗?或甚至一样多? –

回答

-1

i.Relations已经由类型的i.Relations确定的成员。由于您包含using System.Linq;,迄今为止最可能的解释是i.Relations被声明为某种类型,它不会执行IEnumerable<T>i.Relations可能是各种各样的东西,但它听起来像编译器告诉你有一件事情不是。

-2

关系属性应该是一个IEnumerable。请确保您有

using System.Linq 

句话,因为这是谁带来的总和扩展方法

+4

这是问题的第一行 –

-1

你很可能试图总结字符串或任何其他对象值集合。

请尝试在sum之前转换该值,您必须确保j.ViewCount始终为整数,否则您会遇到异常。请尝试下面的代码。

public void Count() 

{ 变种计数= _context.Objects 。选择(I =>新的{I,观看次数= i.Relations.Sum(J => Convert.ToInt32(j.ViewCount))}); }