【问题标题】:How to join tables using LINQ and navigation properties如何使用 LINQ 和导航属性连接表
【发布时间】:2016-10-21 07:14:39
【问题描述】:

Previous question link

考虑我之前的问题(我放了一个链接)我需要获取一些不同的信息。

这是一个我只添加了导航属性的数据库结构

public virtual ICollection<Accident> Accidents { get; set; } 

到运输类

public class Person
{
    [Key]
    public int PersonID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Transport
{
    [Key]
    public int TransportID { get; set; }
    public string Model { get; set; }
    public string Brand { get; set; }
    public virtual ICollection<Accident> Accidents { get; set; }
}

public class Accident
{
    [Key]
    public int AccsidentID { get; set; }
    public DateTime AccidentDate { get; set; }
    public int TransportID { get; set; }
    [ForeignKey("TransportID")]
    public virtual Transport Transport { get; set; }

    public int PersonID { get; set; }
    [ForeignKey("PersonID")]
    public virtual Person Person { get; set; }
}
public class AccsidentObject
{
    [Key]
    public int AccidentID { get; set; }
    public DateTime AccidentDate { get; set; }
    public int TransportID { get; set; }
    public string Model { get; set; }
    public string Brand { get; set; }
    public int PersonID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
 }

如果我想得到我使用的所有事故

var accidents = DBContext.Accidents.Select( a => new AccidentObject 
{ 
    AccidentID = a.AccidentId,
    AccidentDate 
    TransportID 
    Model 
    Brand = a.Transport.Brand,
    PersonID = a.Person.PersonID,
    FirstName 
    LastName 
});

如果我想选择带有添加特定事故数据的 TransportObject 的代码是什么

public class TransportObject
{
    [Key]
    public int TransportID { get; set; }
    public string Model { get; set; }
    public string Brand { get; set; }
    public int AccidentID { get; set; }
    public DateTime AccidentDate { get; set; }
}

【问题讨论】:

    标签: c# linq entity-relationship navigation-properties


    【解决方案1】:

    使用此代码

    var transports = DBContext.Transports
            .SelectMany(
                x => x.Accidents, 
                (t, a) => new TransportObject 
                {
                    TransportID = t.TransportID,
                    Model = t.Model,
                    Brand = t.Brand,
                    AccidentID = a.AccidentId,
                    AccidentDate = a.AccidentDate
                }
            );
    

    更多关于在MSDN中选择多个。

    【讨论】:

    • 这就是我所需要的!!实际上我迷失在很多例子中,所以我为我的结构建模,你@Niyoko Yuliawan 帮了我很多!比你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多