LINQ 实体结果到 List<string>

ste*_*myu 1 c# linq silverlight wcf casting

我有一个查询,它只从 silverlight4 域服务中的实体返回一列。如何将结果转换为列表?

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

我尝试使用

return result as List<ToList();
Run Code Online (Sandbox Code Playgroud)

return result.Cast<string>().ToList();
Run Code Online (Sandbox Code Playgroud)

但我得到一个无法隐式转换类型错误从Generic.IEnumerable<string>Generic.List<string>

目前我可以使用

 var result =  from d in this.ObjectContext.vwBusinessUnits
                         select d.BusinessLineID;
            return result.Distinct().ToList();  
Run Code Online (Sandbox Code Playgroud)

我正在尝试在视图模型中使用此结果,但出现转换错误

 private void LoadBUGroupTags()
    {
        TagsData = SecurityDomainContext.Current.GetDataForTags();
    }
Run Code Online (Sandbox Code Playgroud)

错误 1 ​​无法将类型“System.ServiceModel.DomainServices.Client.InvokeOperation>”隐式转换为“System.Collections.Generic.List”

和 TagsData 只是一个公共财产

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

Jon*_*eet 5

不太清楚所涉及的类型是什么 - 但它d.BusinessLineID是一个字符串,那么你最终会得到一个IQueryable<IEnumerable<char>>不是你想要的。

怀疑你想要:

var result =  from d in this.ObjectContext.vwBusinessUnits
              select d.BusinessLineID;
return result.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

这更简单地写(IMO)没有查询表达式:

return this.ObjectContext.vwBusinessUnits
           .Select(d => d.BusinessLineID)
           .Distinct()
           .ToList();
Run Code Online (Sandbox Code Playgroud)