我正在尝试制定一个LINQ查询来选择列表的子列表,它满足where条件,如下所示:
List<Entities.Base> bases = this.GetAllBases();
List<Entities.Base> thebases = from aBase in bases
where aBase.OfficeCD == officeCD
select aBase;
Run Code Online (Sandbox Code Playgroud)
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; }
Run Code Online (Sandbox Code Playgroud)
我收到一个错误"无法将System.Collections.Generic.IEnumerable类型隐式转换为System.Collections.Generic.List
所以我尝试应用Cast运算符但是失败了.我现在看到我不想转换元素的类型.我该如何解决这个问题?谢谢!
Ani*_*Ani 10
这不是一个可以通过"铸造"解决的问题; 您获得的查询结果不是列表 - 它是一个延迟执行的序列,它将根据需要流式传输匹配的项目.您必须实际将这些结果加载到a中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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10599 次 |
| 最近记录: |