拥有三个表(我正在尝试做的简化方法)我正在尝试使用动态列构建一个表。
布局应该是一个网格,显示每个所有者拥有哪些许可证。这是从我首先需要进行不同选择以获取表的标题列的表中检索的。
这是我检索表标题以获取动态列的方法
var tableHeader = (from l in Licenses
join lt in LicenseTypes on l.LicenseTypeId equals lt.ID
where l.Category == 1
select new
{
l.LicenseTypeId,
lt.Name
}).Distinct().OrderBy (x =>x.Name )
我不太清楚将这个查询与我的 headerquery 一起使用来组成我的表的最佳选择是什么
var tableData = (from l in Licenses select l)
一种方法是迭代 tableData 并为每个不同的所有者构建数据行并让子查询检索诸如所有者名称之类的数据以呈现在网格中。然而,这将导致对数据库的一系列事务,所以我想知道这是否可以以更优雅的方式完成。
这是为我的示例生成数据的脚本:
if exists (select * from sysobjects where name = 'LicenseType') drop table LicenseType
if exists (select * from sysobjects where name = 'License') drop table License
if exists (select * from sysobjects where name = 'LicenseOwner') drop table LicenseOwner
go
create table LicenseType
(
ID int not null primary key,
Name nvarchar(30) not null
)
create table LicenseOwner
(
ID int not null primary key,
Name nvarchar(30) not null
)
create table License
(
ID int not null primary key,
LicenseTypeId int null references LicenseType(ID),
LicenseOwnerId int null references LicenseOwner(ID),
Status nvarchar(30),
Category int not null
)
insert LicenseType values (1, 'A001')
insert LicenseType values (2, 'A002')
insert LicenseType values (3, 'A003')
insert LicenseType values (4, 'A004')
insert LicenseType values (5, 'C001')
insert LicenseType values (6, 'X001')
insert LicenseOwner values (1, 'Owner 1')
insert LicenseOwner values (2, 'Owner 2')
insert LicenseOwner values (3, 'Owner 3')
insert LicenseOwner values (4, 'Owner 4')
insert LicenseOwner values (5, 'Owner 5')
insert License values (1, 1, 1, 'OK', 1)
insert License values (2, 2, 1, 'Invalid', 1)
insert License values (3, 3, 1, 'OK', 1)
insert License values (4, 6, 1, 'Pending', 1)
insert License values (5, 1, 1, 'OK', 1)
insert License values (6, 2, 1, 'OK', 1)
insert License values (7, 6, 1, 'Invalid', 1)