我正在使用LINQ to SQL獲取數據集。我需要過濾以下數據集:基於涉及其他行的條件過濾LINQ to SQL集合
如果存在空SourceName的字段,並且該字段的至少一個其他記錄具有非空SourceName,則應將其刪除。
如果它是該字段的唯一行,那麼它應該保留在列表中。
下面是一個例子數據:數據由3列: '字段', 'SOURCENAME' 和 '速度'
Field | SourceName | Rate
10 | s1 | 9
10 | null | null
11 | null | null
11 | s2 | 5
11 | s3 | 4
12 | null | null
13 | null | null
13 | s4 | 7
13 | s5 | 8
8 | s6 | 2
9 | s7 | 23
9 | s8 | 9
9 | s9 | 3
輸出應該是這樣的:
Field | SourceName | Rate
10 | s1 | 9
11 | s2 | 5
11 | s3 | 4
12 | null | null // <- (remains since there's only
13 | s4 | 7 // 1 record for this 'Field')
13 | s5 | 8
8 | null | null
9 | s8 | 9
9 | s9 | 3
如何過濾它?
什麼是對象類型?通常你可以使用類似的過濾器來過濾一個集合:'filteredList = unfilteredList.Where(i => i.SourceName!= null);' – David
@David - 我想這是無法完成的。這將刪除任何具有空源名稱的行。如果它是數據集中唯一的一行,我希望該行保留。謝謝你的評論。 – Aqua267
@Veena:然後是一個更復雜的Where子句,但過程依然如此。可能類似於:'.Where(i =>(i.SourceName!= null)||((i.SourceName == null)&&(unfilteredList.Where(j => j.Field == i.Field).Count ()== 1)))'這都是徒手畫,所以它可能不完美,但它應該給你一個想法。 – David