0

私は次の方法を持っています:

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 を持つアイテムのみを返すことを目的としています。

結果は次のとおりです。

メソッド 'Boolean In[Int32](Int32, Int32[])' は SQL への変換をサポートしていません。

拡張メソッドを使用しなくてもできることはあると思います。誰かが私を正しい方向に向けることができますか?

ありがとう。

4

1 に答える 1

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();
于 2012-05-22T22:54:43.150 に答える