[英]How to display data from multiple tables in a single gridview or gridpanel using linq2sql?
我有兩個SQL表部門和講師與:
Department: DepartmentID, Name
Lecturer: LecturerID, Name, DepartmentID
我想在具有列的表中顯示數據:
Lecturer ID, Name and Department Name
如何使用Linq to Sql(帶有或不帶有lambda表達式)實現此目的? 非常感謝您的幫助。 謝謝。
您需要在Department表和Lecturer表之間使用連接beet
DataClassesDataContext tdc =新的DataClassesDataContext();
var res = (from p in tdc.Lecturers
join br in tdc.Departments on p.DepartmentID equals br.DepartmentID
select new
{
p.DepartmentID,
p.Name,
lectID = p.DepartmentID,
depname = br.Name
}
).ToList();
您的查詢將像這樣
感謝您的回答singhm0077。 我對join有點困惑,但是不幸的是,它沒有按照我的想法工作。 幸運的是,我找到了另一個解決方案。
由於表Lecturer中沒有DepartmentName列,因此我不得不創建Lecturer表的部分類,因為我要綁定Lecturer表中的數據,並且定義了一個DepartmentName屬性,該屬性在數據庫表中添加了一個列。
public partial class Lecturer
{
public string DepartmentName
{
get;
set;
}
}
設計部分是:
<ext:GridPanel ID="grid1" runat="server" Width="600px" Header="false">
<Store>
<ext:Store ID="store1" runat="server">
<Model>
<ext:Model ID="model1" runat="server">
<Fields>
<ext:ModelField Name="LecturerID" Type="Int" />
<ext:ModelField Name="Name" Type="String" />
<ext:ModelField Name="DepartmentName" Type="String" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel>
<Columns>
<ext:Column ID="colLecturerID" runat="server" Flex="1" DataIndex="LecturerID" Text="Lecturer ID"></ext:Column>
<ext:Column ID="colName" runat="server" Flex="1" DataIndex="Name" Text="Name"></ext:Column>
<ext:Column ID="colDepartmentName" runat="server" Flex="1" DataIndex="DepartmentName" Text="Department Name"></ext:Column>
</Columns>
</ColumnModel>
</ext:GridPanel>
使用linq2sql,部分代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
this.store1.DataSource = GetDataToBind();
this.store1.DataBind();
}
}
private List<Lecturer> GetDataToBind()
{
DataBaseDataContext db = new DataBaseDataContext();
List<Lecturer> lstLecturers = db.Lecturers.OrderBy(x => x.LecturerID).ToList();
foreach (Lecturer lecturer in lstLecturers)
{
lecturer.DepartmentName = lecturer.Department.Name;
}
return lstLecturers;
}
最后,如果數據庫如下:
輸出如下所示:
不過,我不知道這是否是最好的方法。 但是,它一直在工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.