我有一个sql表,我希望每个记录都是一个datagrid列 另一个sql表,其中包含与每个fieldID相关的多条记录。我想使用linq
在数据网格的适当列中显示每个值Example data:
tbl_fields:
FieldID | FieldName
1 | First Name
2 | Last Name
3 | State
tbl_records
RecID | FieldID | Value
1 1 John
1 2 Doe
1 3 NY
2 1 Melissa
2 2 Rose
3 1 Charlie
3 2 Brown
3 3 CA
Display like this
RecID | First Name | Last Name | State
1 John Doe NY
2 Melissa Rose null
3 Charlie Brown CA
有什么建议吗? 谢谢!
编辑: 这项工作正常,但如果我不知道FieldNames或者更多的FieldNames区域,那该怎么办?
var data = (from d in db. tbl_records
group d by d.RecID into g
select new
{
Id = g.Key,
FirstName = g.Where(d => d.FieldName == "First Name").FirstOrDefault().Value,
LastName = g.Where(d => d.FieldName == " Last Name").FirstOrDefault().Value,
State= g.Where(d => d. State == "State").FirstOrDefault().Value,
});
答案 0 :(得分:0)
您可以使用透视查询。您的查询将自动生成列。
表示oracle http://www.oracle-developer.net/display.php?id=506
用于sql server http://www.mssqltips.com/sqlservertip/1019/crosstab-queries-using-pivot-in-sql-server-2005/
答案 1 :(得分:0)
您可以添加dbml,将所需的表添加到此文件中。然后做类似的事情:
var dc = new YourdataContext();
yourGrid.DataSource = dc.YourTable.Select( t => new {
t.Property1,
t.RelationTable.Property2,
etc...
} );
yourGrid.DataBind();
并将其添加到 page_load 或 page_init
希望这会有所帮助。 欢呼声。