LINQ сущность приводит к списку <string> - PullRequest
1 голос
/ 14 января 2012

У меня есть запрос, который возвращает только столбец от объекта в домене службы silverlight4.Как преобразовать результаты в список?

public List<string> GetDataForTags() 
{
    var result =  from d in this.ObjectContext.vwBusinessUnits
                  select d.BusinessLineID.Distinct();
    return result;
}   

Я пытаюсь использовать

return result as List<ToList();

и

return result.Cast<string>().ToList();

, но я не могу неявно преобразовать ошибку типаот Generic.IEnumerable<string> до Generic.List<string>

В настоящее время я могу выполнить преобразование с помощью

 var result =  from d in this.ObjectContext.vwBusinessUnits
                         select d.BusinessLineID;
            return result.Distinct().ToList();  

Я пытаюсь использовать этот результат в модели представления, но получаю ошибку преобразования

 private void LoadBUGroupTags()
    {
        TagsData = SecurityDomainContext.Current.GetDataForTags();
    }

Ошибка 1 Не удается неявно преобразовать тип 'System.ServiceModel.DomainServices.Client.InvokeOperation>' в 'System.Collections.Generic.List'

и TagsData isпросто публичная собственность

public List<string> TagsData 
        {
            get 
            {
                return _tags;
            }
            set
            {
                if (_tags != value)
                {
                    _tags = value;
                 OnNotifyPropertyChanged("TagsData");
                }
            }
        }

Ответы [ 4 ]

4 голосов
/ 14 января 2012

Не совсем понятно, что это за типы, но d.BusinessLineID - это строка, и в итоге вы получите IQueryable<IEnumerable<char>>, что не то, что вам нужно.подозреваю вы хотите:

var result =  from d in this.ObjectContext.vwBusinessUnits
              select d.BusinessLineID;
return result.Distinct().ToList();

Это проще написать (IMO) без выражения запроса:

return this.ObjectContext.vwBusinessUnits
           .Select(d => d.BusinessLineID)
           .Distinct()
           .ToList();
1 голос
/ 14 января 2012
  var result =  (from d in this.ObjectContext.vwBusinessUnits 
                select d.BusinessLineID).Distinct().ToList(); 

   return result; 
1 голос
/ 14 января 2012

Используйте метод ToList . Это берет IEnumerable, который по сути является var, и помещает его в список. Существует также метод ToArray (FYI).

EDIT:

Другой вариант - создать новый список, передав переменную var. Подробнее .

0 голосов
/ 14 января 2012

Чтобы получить результат в виде списка строк, необходимо преобразовать бизнес-строку в строку перед получением списка:

<code>
var result = this.ObjectContext.vwBusinessUnits.Select(x=>x.BusinessLineID.ToString()).Distinct();
После этого вы можете получить результат в виде строки
<code>
var resultList = result.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...