LINQ lambda - конвертировать int в строку - PullRequest
8 голосов
/ 30 ноября 2011

Я пытаюсь сравнить 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 ():

System.NotSupportedException: LINQ to Entities не распознает метод метода Int32 ToInt32 (System.String), и этот метод нельзя преобразовать в выражение хранилища.

Как мне решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 30 ноября 2011

Вы работаете с Linq to SQL? Linq пытается преобразовать вашу лямбду в SQL-запрос. К сожалению, ToString не так легко поддерживается.

Вы можете материализовать свои таблицы с помощью ToArray() перед объединением, но это может быть дорого.

Посмотрите на эту статью и этот вопрос .

2 голосов
/ 30 ноября 2011

Попробуйте это:

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() });
1 голос
/ 30 ноября 2011

Вы пробовали это ??

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...