我怎麼能這種方法轉換爲表達我可以在使用LINQ到實體:轉換爲表達
public bool IsMatch(long additionId)
{
return AdditionsPrices.Any(x => x.AdditionId == additionId);
}
謝謝!
我怎麼能這種方法轉換爲表達我可以在使用LINQ到實體:轉換爲表達
public bool IsMatch(long additionId)
{
return AdditionsPrices.Any(x => x.AdditionId == additionId);
}
謝謝!
這就是:
List<long> additionIds = AdditionsPrices.Select(x => x.AdditionId)
.ToList();
,然後在EF Contains()
查詢使用解決方案:
public Expression<Func<Addition, bool>> IsMatch(long additionId)
{
return a => a.AdditionsPrices.Any(x => x.AdditionId == additionId);
}
爲什麼你不只是做了一個contains()查詢,而不是 - 提取List<long>
從AdditionsPrices
:
var results = context.SomeEntitySet
.Where(x => additionIds.Contains(x.AdditionId));
我打算寫一個使用IsMatch方法的查詢。但我總是得到這樣的例外,即實體不能識別該方法。所以我想創建一個返回表達式的新的IsMatch方法。你可以在這裏看到更多關於我的問題:http://stackoverflow.com/q/5845993/289246 – Naor 2011-05-02 03:06:50
這將需要在你的情況下將非基元類型('AdditionsPrices')的列表轉移到SQL - 我不'我認爲這是行得通的 - 當然我可能是錯的。 – BrokenGlass 2011-05-02 03:10:44
所以你告訴有沒有辦法解決在.NET 4.0中的這個問題? – Naor 2011-05-02 03:17:27
歡迎光臨。問題是什麼? – BrunoLM 2011-05-02 02:59:30
@BrunoLM:我不知道如何將此方法轉換爲可以在linq上執行到實體框架查詢中的實體的表達式。 – Naor 2011-05-02 03:00:33