假设我有一个架构,代表问题实体。每个问题都可以投票,投票,或者当然不会投票 - 就像在StackOverflow中一样。我想获得给定用户的投票数量。
int number = (from q in userDbContext.Questions
from qv in q.QuestionVotes
where qv.IsVoteUp
select qv).Count();
我想编写相同的查询,但使用方法语法。如何使用相同的示例执行此操作?
答案 0 :(得分:20)
您可以使用SelectMany
:
userDbContext.Questions.SelectMany(x => x.QuestionVotes).Count(x => x.IsVoteUp);
答案 1 :(得分:3)
必须有效:
int number = userDbContext.Questions
.Select(x => x.QuestionVotes.Count(y => y.IsVoteUp))
.Sum();
它将获取每个父项的已过滤子项的计数。然后Sum()
将计算这些值的总和。
答案 2 :(得分:3)
此LINQ
查询演示了如何使用 3级结构tree
>执行此操作branch
> leaf
为例。
因此,下面的代码为您提供所有树的所有分支的数量(全部或仅使用给定颜色着色):
public class Calculator
{
public int CountAllLeafsOn(List<Tree> trees, string сolor = null)
{
// Count the leafs (all from all branches of all trees, or only if they are colored with the provided color)
return сolor == null
? trees.Sum(tree => tree.Branches.Sum(branch => branch.Leaves.Count))
: trees.Sum(tree => tree.Branches.Sum(branch => branch.Leaves.Count(leaf => leaf.Color.Equals(сolor))));
}
}
public class Tree
{
public List<Branch> Branches { get; set; }
}
public class Branch
{
public List<Leaf> Leaves { get; set; }
}
public class Leaf
{
public string Color { get; set; }
}
希望有所帮助。
答案 3 :(得分:0)
您可以使用以下内容计算儿童:
SELECT *
FROM (SELECT RGS_Id, r.RGS_DateTime, datediff(ss,r.RGS_DateTime,GETDATE()) diff_value
from RGS_Registrazione as r
JOIN RGA_Allarmi as a on r.RGS_MCC_Numero_Serie_MS = a.RGS_MCC_Numero_Serie_MS
GROUP BY RGS_Id, r.RGS_DateTime) T1
ORDER BY diff_value
LIMIT 1;