2013-11-27 122 views
-2

我有下面的類LINQ查詢基於集運行

class Emp 
{ 
    int id; 
    int deptreference; 
    int type; 
    int sal; 
} 

我有以下方式記錄:

1 1 Contractor 1000 
2 1 Permanent 2000 
3 1 Mix  3000 
4 2 Contractor NULL 
5 2 Permanent 0 
6 2 Mix  NULL 
7 3 Contractor 200 
8 3 Permanent 0 
9 3 Mix  NULL 
10 4 Contractor NULL 
11 4 Permanent NULL 
12 4 Mix  NULL 

在這裏,我想刪除只有那些具有所有3種零記錄作爲承包商的僱員,永久和混合。這是記錄10,11,12. 如何編寫單個LINQ語句來執行基於集合的操作,並只刪除所有3種類型都具有sal null的記錄。

請指教。

謝謝。

+1

在EMP班沒有一個字段是可空的 – wudzik

+0

是的,它有int?爲工資。 – user1710989

+0

@ user1710989'sal'是一個'int',而不是'int?'。它不能爲空。 – gunr2171

回答

2

LINQ不適用於修改 - 它用於查詢。因此,您需要選擇要刪除的記錄並執行刪除操作,或選擇您想要保留並使用它們的記錄。

選擇的員工裏面有所有3種類型的員工等於空(假設工資是空整數):

var query = Employees.GroupBy(e => e.deptreference) 
        .Where(g => g.All(e => e.sal == null)) 
        .SelectMany(g => g); 

選擇具有員工至少一個薪水:

​​
+1

真,真+'Emp'類不包含任何可空字段 – wudzik

+1

@wudzik謝謝,並同意)它也看起來更像部門查詢,而不是僱員 –

+0

@lazyberezovsky,我只想刪除記錄10,11,12。 – user1710989