2014-10-08 35 views
0

在組擴展方法篩選查詢可以說我有以下查詢:與由上下文

From row In DataSet.A 
Where row.Position <> 5 
Group row By row.Name Into eGroup = Group 
Select New With { 
    .Name = Name, 
    .Amount = eGroup.Count(Function(x) x.Money) 
} 

該數據集具有場(日期)。由於分組,字段在分組後不存在。所以如果我想按日期過濾,我必須在分組之前進行此操作。

我有一個列表,看起來像:

Dim j as New List(of Integer) 
j.Add(1) 
j.Add(2) 

現在我想按月進行過濾。我知道,我可以使用

.Where(Function(el) ls.Contains(datepart(month,el.date))) 

但如果我設置此背後Where row.Position <> 5查詢已經不運行,因爲它就像打破,無法連接到代碼後記。

任何人都可以告訴我如何設置過濾器?

+0

如何C#涉及? – 2014-10-08 08:59:28

+0

另一方面,你確定'Sum'的每個組別的金額都是「計數」的嗎? – 2014-10-08 09:01:03

+0

您好Tim,是的,因爲它是好的,原來的查詢有點長,可能有點混亂,所以我用了一個較短的版本。亞歷克斯:如果解決方案在c#或vb中無關緊要。許多程序員都可以編程(.NET)。我可以重寫一個c#解決方案。所以我不在乎如果解決方案是在C#或VB中,這就是爲什麼。 – ruedi 2014-10-08 09:08:27

回答

0

你爲什麼不能做:

Dim months = {1, 2} 
Dim query = From row In DataSet.A 
      Where row.Position <> 5 AndAlso months.Contains(row.Date.Month) 
      Group row By name Into eGroup = Group 
      Select New With { 
       Key .Name = name, 
       .Amount = eGroup.Count(Function(row) row.Field(Of Decimal)("Money")) 
      } 
+0

Did not想出了它,因爲我認爲Contains在查詢方法中不可用。知道我更瞭解它。謝謝你的幫助! – ruedi 2014-10-08 09:19:02