我想通过linq查询来计数。用连接计算linq语句
我有会话对象列表。每个TestRun都有一个SessionId的TestRun对象列表。每个会话都有一个用户,而用户有一个团队。
我想算的测试运行,其中TestRun.Session.User.Team == x;
但我不明白的加入,什么是C#LINQ相当于此查询?
我想通过linq查询来计数。用连接计算linq语句
我有会话对象列表。每个TestRun都有一个SessionId的TestRun对象列表。每个会话都有一个用户,而用户有一个团队。
我想算的测试运行,其中TestRun.Session.User.Team == x;
但我不明白的加入,什么是C#LINQ相当于此查询?
明白了。谢谢你们的帮助。
var fullList= from session in mSessions
join testRun in mTestRuns on session.Id equals testRun.SessionId
where session.Value.Username.Team == "whatever"
select new { testRun.Anything };
int count = fullList.Count();
try代码:
` int result=(from p in TestRun
join q in session on p.sessionid equals q.sessionid
join r in user on q.user equals r.userid
where r.team==X select p).distinct().ToList().Count();`
请注意,如果您使用的是通过LINQ2SQL或实体框架的数据库,并且你为这些属性所做的外键关系,则连接是为你做自动:
int result=(from p in TestRun
where p.Session.User.Team == X
select p).Count();
或
int result TestRun.Count(p=>p.Session.User.Team == X);
LINQ到什么?如果您使用实体框架等ORM,则不需要连接。 * ORM *将基于实体间定义的关系生成JOIN语句 –
“什么是C#linq等同于此查询”<=什么查询? [所以] *不是*免费代码写作服务。预计你会尝试**自己编写代码**。在[做更多研究]之后(http://meta.stackoverflow.com/questions/261592),如果你有问题,你可以**发布你已经尝试过**的清单,说明什么是不工作的**并提供** [mcve] **。我建议阅读[问]一个好问题和[完美问题](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要参加[旅游]。 – Igor
@GiladGreen加入LINQ通常是一种气味 - 为什么使用连接而不是关系?用适当的对象模型,你可以编写'ctx.TestRuns.Count(x => x.Session.User.Team = x);'? –