2012-05-22 92 views
0

我有以下方法:方法 '布爾在[的Int32](的Int32,的Int32 [])' 無支持轉換爲SQL

public List<Alert> GetMonthlyAlertsByAccountID(Int32 AccountID, params int[] alertTypes) 
     { 
      List<Alert> result = new List<Alert>(); 

      using (NeuroLabLinqDataContext dc = conn.GetContext()) 
      { 
       IEnumerable<Alert> alerts = (from a in dc.Alerts 
              where a.AccountID == AccountID && 
              a.AlertTypeID.In(alertTypes) 
              orderby ((DateTime)a.CreateDate).Month ascending 
              select a).ToList(); 
      } 

      return result; 
     } 

使用該擴展方法:

public static bool In<T>(this T t, params T[] values) 
     { 
      foreach (T value in values) 
      { 
       if (t.Equals(value)) 
       { 
        return true; 
       } 
      } 
      return false; 
     } 

其目的是僅返回具有特定AlertTypeID的項目。

結果是:

方法 '布爾在[的Int32](的Int32,的Int32 [])' 無支撐 轉換爲SQL。

我確信不用使用擴展方法就可以做。有人能指出我正確的方向嗎?

謝謝。

回答

4

用途:

alertTypes.Contains(a.AlertTypeID) 

相反。

IEnumerable<Alert> alerts = (from a in dc.Alerts 
    where a.AccountID == AccountID && 
    alertTypes.Contains(a.AlertTypeID) 
    orderby ((DateTime)a.CreateDate).Month ascending 
    select a).ToList(); 
相關問題