Possible Duplicate:
LINQ: Check whether an Array is a subset of another如何檢查char數組是否包含另一個char數組中的每個元素?
我想確定是否有辦法使用LINQ來查找子集數組中的每個元素是否在超集數組中。例如用此超集:
{'w','o','k','r','d','o'}
下面將是一個有效的子集:
{'o','k','w','r'}
雖然這些不會是有效的:
{'o','k','w','r','s'}
{'w','o','k','r','d','o','s'}
實際超集是char陣列我有記憶。實際的子集是數據庫表中的一個值。我正嘗試使用LINQ to EF來獲取滿足此條件的表中的所有值。這是我到目前爲止已經試過:
char[] letterArray = letters.ToCharArray();
return we.Words.Where(t => letterArray.Join(t.Word.ToCharArray(),
f => f,
s => s, (f, s) => new { s }).Count() == t.Word.Length
).Select(t => t.Word).ToArray();
但是當我運行此我得到的錯誤:
'Unable to create a constant value of type 'System.Char'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.'
有沒有解決這個錯誤的方法嗎?有沒有更簡單的方法來做我在這裏嘗試的?
這是因爲查詢錯誤,還是因爲LINQ到EF?你在查詢什麼底層數據存儲?這很可能不會支持諸如'ToCharArray()'等東西。 – mellamokb 2012-04-20 02:19:41
如果單詞來自數組,那麼你的代碼實際上工作正常。問題是嘗試轉換爲LINQ到EF的適當查詢無法處理像ToCharArray()等東西。要麼你需要把整個單詞列表存入內存並在那裏處理,或者實現一個更復雜的解決方案,就像我在一週前回答的巧合類似的問題:http://stackoverflow.com/questions/10096744/puzzle-solving-發現所有單詞在一個較大的單詞在PHP/10096985#10096985 – mellamokb 2012-04-20 02:27:11