我有一个名为GetContentPageToValueVo
的函数,该函数接受IEnumerable<Guid>
类型,这里的位置和服务的类型为list<string>
,因此如何将参数中的这一行转换为IEnumerable类型,我的位置列表来自solr,并且具有有效的字符串格式的向导。
Location = ScHelper.Instance().GetContentPageToValueVo(x.Locations),
Service = ScHelper.Instance().GetContentPageToValueVo(x.Services)
答案 0 :(得分:1)
您可以同时使用LINQ Select
方法和Guid.Parse
来将List<string>
转换为IEnumerable<Guid>
。
这里的Select
将:
通过合并元素的索引,将序列的每个元素投影为新形式。
和Guid.Parse
将:
将GUID的字符串表示形式转换为等效的Guid结构。
因此您的代码将变为:
Location = ScHelper.Instance().GetContentPageToValueVo(x.Locations.Select(Guid.Parse)),
Service = ScHelper.Instance().GetContentPageToValueVo(x.Services.Select(Guid.Parse))
为了避免ArgumentNullException
,您可以使用它:
Guid y;
Location = ScHelper.Instance().GetContentPageToValueVo(x.Locations.Where(x=>!string.IsNullOrWhiteSpace(x) && Guid.TryParse(x,out y)).Select(Guid.Parse)),
Service = ScHelper.Instance().GetContentPageToValueVo(x.Services.Where(x=>!string.IsNullOrWhiteSpace(x) && Guid.TryParse(x,out y)).Select(Guid.Parse))
答案 1 :(得分:0)
也许可行
if(x.Locations!=null)
Location = ScHelper.Instance().GetContentPageToValueVo(x.Locations as IEnumerable<Guid>);
if(x.Services !=null)
Service = ScHelper.Instance().GetContentPageToValueVo(x.Services as IEnumerable<Guid>)