Гуид LINQ toString ()

Привет это кажется, что должно работать,

from something in collectionofsomestuff       
select new SelectListItem(){Text = something.Name, Value = something.SomeGuid.ToString(), Selected = false};

Когда я пытаюсь сделать это, это не работает, дают мне ошибку

LINQ к Объектам не распознает метод 'Система. Представьте ToString в виде строки ()' метод, и этот метод не может быть переведен в выражение хранилища.

Существует ли обходное решение?

13
задан Sevki 25 March 2010 в 01:40
поделиться

4 ответа

Не все методы CLR можно использовать с Linq-to-Entities. ToString () кажется одним из них.

Взгляните на Метод CLR для отображения канонических функций .

Возможно, попробуйте явно указать GUID для строковой переменной вне Linq.

string myGuid = SomeGuid.ToString();

from something in collectionofsomestuff       
select new SelectListItem(){Text = Name, Value = myGuid, Selected = false};
6
ответ дан 1 December 2019 в 23:31
поделиться

В итоге я сделал такой метод foreach

           List<SelectListItem> list  = new List<SelectListItem>();
       foreach (SomeThing something in collectionofsomestuff)
       {
           list.Add(new SelectListItem(){Text = something.Name,Selected = false,Value = something.SomeGuid.ToString()});
       }

это единственный способ заставить его работать ... это было не то, на что я надеялся сделать сложный ..

1
ответ дан 1 December 2019 в 23:31
поделиться

Создайте конструктор для SelectListItem, который принимает ваше значение как Guid и ToString его там. Теперь вызовите свой запрос так:

from something in collectionofsomestuff select new SelectListItem(something.Name, something.SomeGuid, false);
1
ответ дан 1 December 2019 в 23:31
поделиться

Я не слишком хорошо знаю выражения запросов Linq, но следующее должно помочь:

collectionofsomestuff //here it's LinqToEntities
    .Select(something=>new{something.Name,something.SomeGuid})
    .ToArray() //From here on it's LinqToObjects
    .Select(s=>new SelectListItem()
        {
            Text = s.Name, 
            Value = s.SomeGuid.ToString(), 
            Selected = false
        })
4
ответ дан 1 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: