LINQ lambda -将int转换为字符串

本文关键字:转换 字符串 int lambda LINQ | 更新日期: 2023-09-27 18:16:07

我试图比较一个int与一个字符串在linq lambda的连接方法,像这样:

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():

系统。NotSupportedException: LINQ to Entities不识别'Int32 ToInt32(System.String)'方法,并且该方法不能转换为存储表达式。

如何解决这个问题?

LINQ lambda -将int转换为字符串

您正在使用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");