我正在使用LINQ和DataContext从SQL Server表返回一组对象。该表名为“Widgets”,我正在使用的相应C#类如下所示。 Widgets表包含Name列和TypeID列,它是另一个窗口小部件类表的外键。
[Table(Name = "Widgets")]
public Class Widget
{
[Column(Name = "Name")]
public String Name{get;set;}
[Column(Name = "TypeID")]
public int TypeID{get;set;}
}
现在我更愿意通过类型名称而不是ID来访问小部件的类型,如下所示。但是类型名称来自另一个表,然后是Widget,WidgetTypes。
[Table(Name = "Widgets")]
public Class Widget
{
[Column(Name = "Name")]
public String Name{get;set;}
[Column(Name = "TypeID")]
public int TypeID{get;set;}
//NEW PROPERTY
public String TypeName(get;set;)
}
有没有办法用LINQ DataContext进行JOIN,它会将数据库中多个表的数据作为单个对象返回?
更新:
这是我的DataContext
class WidgetsContext : DataContext
{
public WidgetsContext(string connection):base(connection)
{
}
public Table<Widget> Widgets;
public Table<WidgetType> WidgetTypes;
}
答案 0 :(得分:2)
如果您正在谈论Linq to SQL,那么您的LINQ代码中根本不需要连接:
var funWidgets = ctx.Widgets.Where(w => w.Type.Name == "FunWidgetType");
(假设ctx是您的DataContext)
您所要做的就是确保在Widgets和WidgetTypes之间的DBML文件中定义了关系。