C# LINQ lambda-将int转换为字符串
我试图在linq lambda的连接方法中将int与字符串进行比较,如下所示:C# LINQ lambda-将int转换为字符串,c#,.net,linq,exception-handling,C#,.net,Linq,Exception Handling,我试图在linq lambda的连接方法中将int与字符串进行比较,如下所示: database.booking.Join(database.address, book => book.bookno, afh => afh.addressid.ToString(), (book, afh) => new { booking = book, add
database.booking.Join(database.address,
book => book.bookno,
afh => afh.addressid.ToString(),
(book, afh) => new { booking = book, add = afh })
.Where(book => book.address.name == "test");
但是我在ToString()上遇到了一个错误:
System.NotSupportedException:LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且无法将此方法转换为存储表达式
如何解决此问题?您是否正在使用Linq to SQL?Linq正在尝试将lambda转换为sql查询。不幸的是,
ToString
并不是那么容易支持的
您可以在加入之前使用ToArray()
具体化表,但这可能会很昂贵
看看并试试这个:
var bookinger = database.booking.Join(database.address,
book => book.bookno,
afh => afh.addressid,
(book, afh) =>
new { booking = book, add = afh })
.Where(book => book.address.name == "test")
.Select(new { booking, add = add.ToString() });
你试过这个吗
var bookinger =
database.booking.Join(database.address,
book => book.bookno,
afh => Convert.ToString(afh.addressid),
(book, afh) =>
new { booking = book, add = afh })
.Where(book => book.address.name == "test");
尝试使用
SqlFunctions.StringConvert((double)afh.addressid)
代替ToString()
@Poku linq to entiite不支持任何转换,如conert.Tostring()和convert.ToInt32,convert.ToDatetime..@Poku我最好的建议是首先将数据库中的记录检索到列表中,然后对该列表进行转换和比较..然后它对您有效..但是当我无法进行比较时,我如何加入数据?这在编译时会失败。book.bookno=string和afh.addressid=int。正如您提到的,在我的例子中,这可能太贵了:(是的,但是看看链接——它们可能会有帮助:)这个解决方案的性能实际上并没有那么差,所以我将对此进行讨论。谢谢嗨,戴夫。你在这里编辑了什么?我又犯了什么愚蠢的错误吗