我有在運行時傳入我的函數的未知數量的複雜鍵。它們的結構如下:在Entity Framework 5 CodeFirst中,如何創建一個將在任何一對值發現時返回的查詢?
var keys = new List<List<string>>
{
new List<string> { "1", "a" },
new List<string> { "2", "b" },
new List<string> { "3", "c" }
};
內部列表將始終有兩個值。外部列表可以有n個值。我試圖查詢一個表,其中記錄與列表中的任何對匹配。我想這個查詢是這樣的:
var filtered =
dataContext.T.Where(
s => keys.Any(k =>
k[0] == s.Column0
&& k[1] == s.Column1));
在這一點上,因爲它似乎LINQ是無法處理的。任何()方法中列出(或陣列?)LinqToEntities失敗。
這是錯誤,當我運行此代碼,我得到:
"LINQ to Entities does not recognize the method 'System.String get_Item(Int32)' method, and this method cannot be translated into a store expression."
所以我的問題是,我怎麼能查詢匹配在列表中的任何一對值的記錄?只要我可以查詢任何一組對,我就可以改變結構的任何內容。
感謝您的任何指導。
而不是兩個項目列表的列表,你有沒有考慮使用元組列表?不太瞭解實體可以肯定地說,但它可能有幫助。 –
嗯。我會盡快嘗試。 – quakkels
不幸的是,元組的想法不起作用:{「無法創建類型爲'System.Tuple'2的常量值。在這種情況下只支持原始類型或枚舉類型。」} – quakkels