从 Linq 筛选器创建列表

本文关键字:创建 列表 筛选 Linq | 更新日期: 2023-09-27 17:56:21

>我目前正在过滤掉由JSON数据填充的列表:

List<RootObject> FlightTimes = (List<RootObject>)GridView1.DataSource;
foreach (var v in from p in FlightTimes
                  where p.Direction == "A"
                  select new { p.Date, p.Time, p.SortTime, p.Direction, p.FlightNumber, p.Endpoint, p.Status, p.Status2 }) ;

我在尝试将数据从foreach获取到新列表中时遇到问题。有人可以帮忙吗?

从 Linq 筛选器创建列表

问题是你的循环产生匿名类型的元素,所以你不能为它声明一个正确类型的列表。您可以通过不使用 foreach 并将查询结果发送到 ToList 来解决此问题:

var myList = (
    from p in FlightTimes
    where p.Direction == "A"
    select new {
        p.Date
    ,   p.Time
    ,   p.SortTime
    ,   p.Direction
    ,   p.FlightNumber
    ,   p.Endpoint
    ,   p.Status
    ,   p.Status2
    }
).ToList();

现在,编译器有足够的信息来捕获列表的类型,从而生成所需的结果。如果需要在循环中执行其他处理,请在单独的foreach循环中使用myList

如果你只想获取一个Direction == "A"对象的列表,你可以把它重构为这样:

var FlightTimes = ((List<RootObject>)GridView1.DataSource)
    .Where(ft => ft.Direction == "A").ToList();