LINQ lambda - 将int转换为字符串

时间:2011-11-30 12:06:51

标签: c# .net linq exception-handling

我正在尝试将int与linq lambda的join方法中的字符串进行比较,如下所示:

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 ToInt32(System.String)'方法,并且此方法无法转换为商店表达式。

我如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您是否正在使用Linq进行SQL? Linq正在尝试将您的lambda转换为sql查询。不幸的是,ToString并不那么容易支持。

您可以在加入之前使用ToArray()实现您的表格,但这可能会很昂贵。

查看this articlethis question

答案 1 :(得分:2)

试试这个:

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() });

答案 2 :(得分:1)

你试过这个吗?

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");