2014-04-03 50 views
0

我的有兩個表的員工的員工姓名:LINQ查詢到如下取誰正在正好3個項目

1)員工

2)項目

職員表中的記錄:

empid  empname  project_id 
1   abc    101 

2   pqr    100 

3   lmn    99 

4   abc    99 

5   abc    100 

項目表:

pid pname 

99 jknkj 

100 nkj 

101 kjkjn 

現在我想獲取正在從事3個項目的員工的員工姓名?

我想linq query.can任何人與我linq查詢?

回答

1

您可以使用GroupBy和組您Employees基於project_id然後得到完全包含3員工羣體:

db.Employees.GroupBy(x => x.project_id) 
.Where(x => x.Count() == 3) 
.SelectMany(x => x.Select(e => e.empname)); 

編輯:下面的評論是正確的,你可以將你爲了記錄由emp_name解決這個問題:

db.Employees.GroupBy(x => x.empname) 
.Where(x => x.Count() == 3) 
.Select(x => x.Key); 
+0

感謝ü如此多的烏拉圭回合樣help.thankü再次 – user3459997

+1

這得到項目有3個人在工作,而不是從事3個項目的人。 – juharr

+0

@juharr你是對的。謝謝你指出,我更新了我的答案,它應該正常工作。 –

3
如果你想獲取誰正在研究究竟3個項目的員工,

做這樣的事情:

var Counts = 
     from e in employees 
     group p by e.empname into g 
     where g.Count == 3 
     select new { Employee = g.Key, ProjectCount = g.Count() }; 

,如果你想獲取想要的項目上正好3名員工,然後工作這樣做:

var Counts = 
      from e in employees 
      group p by e.projectid into g 
      where g.Count == 3 
      select new { Porject= g.Key, EmployeeCount = g.Count() }; 
+0

非常感謝你的幫助。謝謝你一旦獲益。 – user3459997