Kar*_*tel 3 c# linq asp.net var list
我试图将Linq var转换为List.my c#代码是
private List<HyperlinkInfo> GetHyperlinkByCode()
{
TourInfoBusiness obj = new TourInfoBusiness();
List<HyperlinkInfo> lst = new List<HyperlinkInfo>();
lst = obj.GetAllHyperlink();
//lst = lst.Select(x => x.Attraction).ToList();
var k = lst.Select(x => x.Attraction).Distinct();
}
Run Code Online (Sandbox Code Playgroud)
如果你查看上面的代码,直到Line var k = lst.Select(x => x.Attraction).Distinct();为OK现在可以将var k转换为List.
根据您的评论,您需要HyperlinInfo每个Attraction值的单个对象(这是字符串).所以,使用分组和ToList():
private List<HyperlinkInfo> GetHyperlinkByCode()
{
TourInfoBusiness obj = new TourInfoBusiness();
List<HyperlinkInfo> lst = obj.GetAllHyperlink();
return lst.GroupBy(x => x.Attraction) // group links by attraction
.Select(g => g.First()) // select first link from each group
.ToList(); // convert result to list
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用morelinq DistinctBy扩展(可从NuGet获得):
private List<HyperlinkInfo> GetHyperlinkByCode()
{
TourInfoBusiness obj = new TourInfoBusiness();
List<HyperlinkInfo> lst = obj.GetAllHyperlink();
return lst.DistinctBy(x => x.Attraction).ToList();
}
Run Code Online (Sandbox Code Playgroud)
使用Enumerable.ToList<TSource> Method.只需ToList()在查询结尾处添加或
return k.ToList();
Run Code Online (Sandbox Code Playgroud)
所以你的方法可以是:
private List<HyperlinkInfo> GetHyperlinkByCode()
{
TourInfoBusiness obj = new TourInfoBusiness();
List<HyperlinkInfo> lst = new List<HyperlinkInfo>();
lst = obj.GetAllHyperlink();
//lst = lst.Select(x => x.Attraction).ToList();
var k = lst.Select(x => x.Attraction).Distinct();
return k.ToList();
}
Run Code Online (Sandbox Code Playgroud)
但x.Attraction应该是HyperLinkInfo类型对象.
编辑:基于注释,它似乎x.Attraction是一个字符串,您需要Project.Bll.HyperlinkInfo在select语句中创建您的类的对象,然后返回该列表.就像是:
var k = lst.Select(new Project.Bll.HyperLinkInfo(x => x.Attraction)).Distinct();
Run Code Online (Sandbox Code Playgroud)
假设Project.Bll.HyperlinkInfo构造函数接受一个字符串参数来返回一个HyperLinkInfo对象.
| 归档时间: |
|
| 查看次数: |
28284 次 |
| 最近记录: |