LINQ to Entities 的有关问题 LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为
LINQ to Entities 的有关问题 LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为
日期:2014-05-20 浏览次数:20851 次
LINQ to Entities 的问题 LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为 用LINQ to Entities做组合查询的时候,用join做内连接。但是两个表关联的列的数据类型不一致。如:
using (YyyseePortalEntities db = new YyyseePortalEntities()) { var temp= from A in db.Photo join B in db.Share on A.Content equals B.Id.ToString() select{......};
}
现在会报错:LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。 由于Id列是guid类型。必须变成字符串才可以比较。可是转换后就会出错。
请问什么原因。应如何修改??
------解决方案-------------------- var temp= from A in db.Photo join B in db.Share on A.Content equals B.Id select{......};
把.ToString() 去掉试试
------解决方案-------------------- http://topic.csdn.net/u/20100714/12/9100ae62-1d04-4646-97b1-ae8856d7ff59.html
------解决方案-------------------- 在linq to entity语句里不能像LINQ TO SQL 那样使用非linq to entity方法,如Tostring(),Convert.toDatetime(),自定义的方法等等,最好的解决方案是在参数传进去前将参数处理好,如楼主再将B.Id.ToString() 传进去前先B.Id.ToString() 就可以了而不在linq to enttity语句中执行B.Id.ToString()
------解决方案-------------------- var temp= from A in db.Photo join B in db.Share on A.Content equals B.Id.ToString() select{......}; =============
C# code
//你这样试试,我刚刚用我本地的数据测试是可以toString()查询出数据的
var temp= from A in db.Photo
from B in db.Share
where System.Data.Linq.SqlClient.SqlMethods.Equals(A.Content,B.Id.ToString())
select{......};
------解决方案--------------------
------解决方案-------------------- string s = B.Id.ToString(); var temp= from A in db.Photo join B in db.Share on A.Content equals s select{......};