计算数组中的项目,除了等于 -1 的值
count items in array except value that equal to -1
我有这个 LINQ to 实体:
int siteNumbers = g.Select(x => x.siteId).ToArray().Distinct().Count()
例如:
当 x.siteId
为 -1
时,我不想计算该值,即我只想计算不等于 -1
.
的值
当 x:[1,2,6,-1]
时 siteNumbers
值为 3。
当 x:[-1]
时 siteNumbers
值为 0。
我必须在上面的查询中更改什么才能实现它?
您可以在 Select 语句之前添加 Where 语句,如下所示:
int siteNumbers = g.Where(x => x.siteId != -1).Select(x => x.siteId).ToArray().Distinct().Count()
您可以在查询中使用 where
子句来过滤掉具有 siteId == -1
的数据
int siteNumbers = g.Where(f => f.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
另请注意,您不需要 ToArray()
。
使用Where
筛选结果
int siteNumbers = g.Where(x => x.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
也可能没有必要调用 ToArray
,因为 siteId
是不可分割的并且 SQL 知道比较它们并获得不同的值。
您还可以添加条件 Count
int siteNumbers = g.Select(x => x.siteId)
.Distinct()
.ToArray()
.Count(x => x != -1);
您应该调用 ToArray
,因为 Count
linq to entities 不支持谓词重载
您可以利用 LINQ
中的 Where
子句:
int siteNumbers = g.Where(x => x.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
您也可以删除 .ToArray()
,因为它是多余的。
试试这个
int siteNumbers = g.Select(x=>x.siteId).Where(i => i != -1).Distinct().Count()
我有这个 LINQ to 实体:
int siteNumbers = g.Select(x => x.siteId).ToArray().Distinct().Count()
例如:
当 x.siteId
为 -1
时,我不想计算该值,即我只想计算不等于 -1
.
当 x:[1,2,6,-1]
时 siteNumbers
值为 3。
当 x:[-1]
时 siteNumbers
值为 0。
我必须在上面的查询中更改什么才能实现它?
您可以在 Select 语句之前添加 Where 语句,如下所示:
int siteNumbers = g.Where(x => x.siteId != -1).Select(x => x.siteId).ToArray().Distinct().Count()
您可以在查询中使用 where
子句来过滤掉具有 siteId == -1
int siteNumbers = g.Where(f => f.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
另请注意,您不需要 ToArray()
。
使用Where
筛选结果
int siteNumbers = g.Where(x => x.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
也可能没有必要调用 ToArray
,因为 siteId
是不可分割的并且 SQL 知道比较它们并获得不同的值。
您还可以添加条件 Count
int siteNumbers = g.Select(x => x.siteId)
.Distinct()
.ToArray()
.Count(x => x != -1);
您应该调用 ToArray
,因为 Count
linq to entities 不支持谓词重载
您可以利用 LINQ
中的 Where
子句:
int siteNumbers = g.Where(x => x.siteId != -1)
.Select(x => x.siteId)
.Distinct()
.Count();
您也可以删除 .ToArray()
,因为它是多余的。
试试这个
int siteNumbers = g.Select(x=>x.siteId).Where(i => i != -1).Distinct().Count()