[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法
生活随笔
收集整理的這篇文章主要介紹了
[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Guid?ClsID?=?new?Guid("d4ee9c52-8d68-4f33-9485-0926281c78ac");
IList<Guid>?Ids?=?WebProduct.GetAllChildByID(ClsID);
var?query?=?db.T_Products.Where(p?=>?Ids.Contains((Guid)p.F_ClsID));//這一句編譯時無錯,但是一執行,就報錯 出錯信息如下:
方法“Boolean Contains(System.Guid)”不支持轉換為 SQL。
轉帖請注明出處(網名:菩提樹下的楊過/真名:楊俊明 msn:yjmyzy@hotmail.com)
IList<Guid>?Ids?=?WebProduct.GetAllChildByID(ClsID);
var?query?=?db.T_Products.Where(p?=>?Ids.Contains((Guid)p.F_ClsID));//這一句編譯時無錯,但是一執行,就報錯 出錯信息如下:
方法“Boolean Contains(System.Guid)”不支持轉換為 SQL。
估計是.net現有的linq to sql還無法直接將IList某些類型(比如Guid類型)的Contains方法正確翻譯為SQL語句
研究了好久,無意間發現linq的100個官方例子中,有一個用數組實現in語句的例子,也是用Contains做的,于是把IList<Guid>轉到Guid[]數組試了下,居然成功了,分享一下
var query = db.T_Products.Where(p => Ids.Contains((Guid)p.F_ClsID));
改為:
var query = db.T_Products.Where(p => Ids.ToArray<Guid>().Contains((Guid)p.F_ClsID));
這樣運行時,就能正常得到結果了
轉帖請注明出處(網名:菩提樹下的楊過/真名:楊俊明 msn:yjmyzy@hotmail.com)
轉載于:https://www.cnblogs.com/yjmyzz/archive/2008/06/27/1231063.html
總結
以上是生活随笔為你收集整理的[方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《软件质量保证与测试》读书笔记(一)
- 下一篇: 命令行下的mysql的基本操作