简体   繁体   English

LINQ查询结果中WPF的构建列表

[英]Build list for WPF from LINQ query result

What I need to learn how to construct List from query results 我需要学习如何从查询结果构造列表

My DBContext: 我的DBContext:

public class Transport
{
    [Key]
    public int TransportID {get; set;}
    public string Model { get; set; }
    public string Brand { get; set; }
}

public class TransportOwner
{
    [Key]
    public int TransportOwnerID {get; set;}
    public int TransportID {get; set;}
    [ForeignKey("TransportID")]
    public virtual Transport Transport { get; set; }
}

public virtual DbSet<Transport> Transports { get; set; }
public virtual DbSet<TransportOwner> TransportOwners { get; set; }

In c# I created List: 在C#中,我创建了List:

private List<OwnerTransport> _ownerTransportList;

Also have a data from my DBContext: 也有来自我的DBContext的数据:

var ownerTransport = DBContext.OwnerTransports.AsQueryable();

var queryResult = ownerTransport
        .Select(t => new
        {
            t.ID,
            t.PersonalCode,
            t.TransportID,
            Model = t.Transport.Model,
            Brand = t.Transport.Brand, 
        }).ToList();

queryResult I want to see in OwnersTransportList ant set is as ItemSource for my DataGrid 我想在OwnersTransportList蚂蚁集中看到的queryResult是作为DataGrid的ItemSource

Consider using LINQ-to-Entities to execute filters on the data in the (DB) store before pulling the data into memory through EF. 在通过EF将数据拖入内存之前,请考虑使用LINQ-to-Entities对(DB)存储中的数据执行筛选器。

For example, to populate your WPF GridControl, execute the following code. 例如,要填充WPF GridControl,请执行以下代码。 As an example for a possible filter, I included a where clause to filter for a specific TransportID . 作为一个可能的过滤器的示例,我包括了一个where子句以过滤特定的TransportID

public ICollection<OwnerTransport> GetOwnerTransportByTransportId(int transportId, int? skip = null, int? take = null)
{
    using (var context = new DBContext())
    {
       // base query
       var query = context.OwnerTranports.AsQueryable();

       // execute filter on transport ID
       query = query.Where(t => t.TransportID == transportId.Value);

       // apply skip/take
       if (skip.HasValue)
       {
           query = query.Skip(skip.Value);
       }
       if (take.HasValue)
       {
           query = query.Take(take.Value);
       }         

       // Materialize data. This pulls it from DB store into memory.
       var data = query.ToList();

       return data;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM