gpt4 book ai didi

c# - LINQ Cast Ienumerable 到特定类型的列表

转载 作者:太空狗 更新时间:2023-10-29 22:12:59 24 4
gpt4 key购买 nike

我正在尝试制定一个 LINQ 查询来选择满足 where 条件的列表的子列表,如下所示:

List<Entities.Base> bases = this.GetAllBases();
List<Entities.Base> thebases = from aBase in bases
where aBase.OfficeCD == officeCD
select aBase;

其中 Base 只是一个实体类:

public string BaseCD { get; set; }
public string BaseName { get; set; }
public string OfficeCD { get; set; }
public DateTime EffectiveDate { get; set; }
public DateTime ExpirationDate { get; set; }

我收到错误消息“无法将类型 System.Collections.Generic.IEnumerable 隐式转换为 System.Collections.Generic.List

所以我尝试应用 Cast 运算符,但失败了。我现在明白我不想转换元素的类型。我该如何解决这个问题?谢谢!

最佳答案

这真的不是“类型转换”就能解决的问题;您获得的查询结果不是一个列表 - 它是一个延迟执行的序列,按需 将匹配项流出。您必须将这些结果实际加载到 List<T> 中达到你的目的。例如,Enumerable.ToList方法将创建一个新列表,用查询结果填充它,然后返回它。

几个选项:

var thebases = (from aBase in bases
where aBase.OfficeCD == officeCD
select aBase).ToList();

// fluent syntax
var thebases = bases.Where(aBase => aBase.OfficeCD == officeCD)
.ToList();

// not a LINQ method - an instance method on List<T>.
// Executes immediately - returns a List<T> rather than a lazy sequence
var thebases = bases.FindAll(aBase => aBase.OfficeCD == officeCD);

// "manual" ToList()
var theBases = new List<Entities.Base>();
var matchingBases = from aBase in bases
where aBase.OfficeCD == officeCD
select aBase;

foreach(var matchingBase in matchingBases)
theBases.Add(matchingBase);

关于c# - LINQ Cast Ienumerable 到特定类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com