c# - 有没有一种简单的方法可以在两个List <T>之间进行转换?

标签 c# linq-to-sql generics

var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
                  orderby l.Distance
                  select l);
        return (List<CandidateResult>)candidates;

最佳答案

好吧,您的“候选人”变量不是List<T>,而是某些IEnumerable<T>T

但是,即使在C#4中,List<T>也不是T的变体(因为它是一个类,并且类是不变的;并且还因为它在输入和输出位置都使用了T)。

最简单的解决方案是获取正确的序列类型开头,然后调用ToList

var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
                  orderby l.Distance
                  select (CandidateResult) l);
return candidates.ToList();


如下所示,可以改为调用Cast,但在这种情况下,我认为它不会变得更好。

var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
                  orderby l.Distance
                  select l);
return candidates.Cast<CandidateResult>()
                 .ToList();


请注意,当您实际上只在做一件事情(在这种情况下是排序)时,不使用查询表达式通常会更简单,例如

return db.GetLeads(lat, lon, role, radius + 10)
         .OrderBy(l => l.Distance)
         .Cast<CandidateResult>()
         .ToList();

关于c# - 有没有一种简单的方法可以在两个List <T>之间进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1473750/

相关文章:

c# - 有没有办法让所有 C<> 都有一个静态字段值?

delphi - 将 TArray<X> 类型转换为 X 数组是否安全?

scala - 方法参数中的抽象类型

c# - 是否可以在控制台窗口中运行 Windows 应用程序?

c# - 添加新数据源对话框期间新连接失败

.net - 如何强制 LINQ to SQL 将 .NET DateTime 作为 datetime2 传递?

c# - 无法将类型 'System.Collections.Generic.IEnumerable<AnonymousType#1>' 隐式转换为 'System.Collections.Generic.List<modelClass>

c# - 批量注册 IEntityTypeConfiguration<> Entity Framework 核心

c# - 对分数和带分数列表进行排序

ASP.NET 搜索表单 - 动态 Linq to SQL?