LINQ: конвертировать Guid в строку - PullRequest
3 голосов
/ 16 сентября 2011

Я получаю исключение при выполнении этого кода:

var result = from menu in menuBus.GetMenus()
             orderby menu.InternalName
             select new 
             {
                 Value = menu.ID.ToString(),
                 Text = menu.InternalName
             };

var result = allMenus.ToList();

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

Итак, я думаю, что-то не так с Value = menu.ID.ToString (). Свойство ID определяется как GUID (уникальный идентификатор в MS SQL).

У кого-нибудь есть решение для этого?

Большое спасибо !!!

Ответы [ 2 ]

6 голосов
/ 16 сентября 2011

Вам нужно выполнить список через другой запрос после запроса к базе данных.

var result = (from menu in menuBus.GetMenus()
                        orderby menu.InternalName
                        select new 
                        {
                            Value = menu.ID,
                            Text = menu.InternalName
                        }).ToList();


var result2 = (from menu in result select new {Value=menu.Value.ToString(),Text=menu.Text}).ToList();
1 голос
/ 16 сентября 2011

Насколько я знаю, у вас не может быть .ToString() в вашем запросе linq, потому что linq to entity не знает, что с ним делать (потому что он не может преобразовать его в оператор sql) ... Выможет иметь выделенную часть как

select new
{
     Value = menu.ID,
     Test = menu.InternalName
}

, а затем просто использовать цикл foreach и копировать значения в другой список при преобразовании guid в строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...