LINQ实体结果到列表<;字符串>;
本文关键字:lt 字符串 gt 列表 实体 结果 LINQ | 更新日期: 2023-09-27 18:20:11
我有一个查询,它只返回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只是一个公共属性
public List<string> TagsData
{
get
{
return _tags;
}
set
{
if (_tags != value)
{
_tags = value;
OnNotifyPropertyChanged("TagsData");
}
}
}
目前还不清楚所涉及的类型是什么,但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();
使用ToList方法。这需要IEnumerable,它本质上就是var,并将其放入列表中。还有一种ToArray方法(仅供参考)。
编辑:
另一个选项是创建一个传递var变量的新列表。详细信息。
var result = (from d in this.ObjectContext.vwBusinessUnits
select d.BusinessLineID).Distinct().ToList();
return result;
为了获得字符串列表的结果,您应该在获得列表之前将业务线转换为字符串:
var result = this.ObjectContext.vwBusinessUnits.Select(x=>x.BusinessLineID.ToString()).Distinct();
完成此操作后,您可以获得字符串形式的结果
var resultList = result.ToList();