2017-05-05 32 views
-5

我想通过linq查询来计数。用连接计算linq语句

我有会话对象列表。每个TestRun都有一个SessionId的TestRun对象列表。每个会话都有一个用户,而用户有一个团队。

我想算的测试运行,其中TestRun.Session.User.Team == x;

但我不明白的加入,什么是C#LINQ相当于此查询?

+1

LINQ到什么?如果您使用实体框架等ORM,则不需要连接。 * ORM *将基于实体间定义的关系生成JOIN语句 –

+0

“什么是C#linq等同于此查询”<=什么查询? [所以] *不是*免费代码写作服务。预计你会尝试**自己编写代码**。在[做更多研究]之后(http://meta.stackoverflow.com/questions/261592),如果你有问题,你可以**发布你已经尝试过**的清单,说明什么是不工作的**并提供** [mcve] **。我建议阅读[问]一个好问题和[完美问题](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要参加[旅游]。 – Igor

+0

@GiladGreen加入LINQ通常是一种气味 - 为什么使用连接而不是关系?用适当的对象模型,你可以编写'ctx.TestRuns.Count(x => x.Session.User.Team = x);'? –

回答

0

明白了。谢谢你们的帮助。

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(); 
1

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();` 
0

请注意,如果您使用的是通过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);