如何使用linq表达式加入select语句

1fu*_*ure 0 c# linq

嗨有两个表有如下关系..

class Boothtable
{
  public int BoothId {get;set;}
  public string BoothName {get;set;}
  public double Price {get;set;}
  public int RoomId{get;set;}
} 

class RoomTable
{
   public int RoomId {get;set;}
   public string RoomName{get;set;}
   public sting Location {get;set;}

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用LINQ编写连接查询以将boothtable加入RoomId上的roomstable并返回boothtable中的所有属性,并仅返回Rooms表中的RoomName属性.是否有人可以指导我如何实现这一目标?

到目前为止,我有一个这样的linq exp,但它只返回booths表中的所有属性.

var getData = from boothtable in context.Boothtable
              join roomtable in context.RoomTable 
              on boothtable.RoomId equals roomtable.RoomId
              where boothtable.BoothId == someId
              select boothtable;
Run Code Online (Sandbox Code Playgroud)

Gil*_*een 6

如果要从两者中检索属性,则必须投影包含两者的数据的对象.这使用匿名对象来执行此操作:

select new { boothtable, roomtable }
Run Code Online (Sandbox Code Playgroud)

如果要从方法返回此匿名对象集合,请使用这两个属性定义自定义对象并对其进行实例化

select new YourCustomObjet { Booth = boothtable, Room = roomtable }
Run Code Online (Sandbox Code Playgroud)

如果您只想要一些属性(首先想念它),那么当您在上面的示例中投影对象时,只需投影特定字段:

select new 
{
    boothtable.BoothId,
    boothtable.BoothName,
    boothtable.Price,
    roomtable.RoomName 
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果它是一个匿名对象,并且所需的属性名称相同,则无需显式定义名称