如何将Linq var转换为List

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.

Ser*_*kiy 6

根据您的评论,您需要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)


Hab*_*bib 5

使用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对象.