你能帮帮忙吗?
我有一个由两个表组成的数据库: TestData&核心 Table TestData有列:ID(int)Core(int)Name(NVARCHAR)等... 表Core具有列:ID(int)CoreName(Nvarchar)
我设置了一个关系,以便Testdata(testdata.Core)中的列链接到Core.CoreID,这样我就可以将所有核心类型保存在一个表中,并使用数字(int)在我的主TestData表中描述它们
我正在使用LINQ c#并希望将我的结果显示绑定到gridview,其中它显示了内部联接的等价物,这样我最终得到一个gridview结果,显示TestData表中的ID和Name列以及来自的核心表。
到目前为止,我有这个代码,它似乎工作但只有当我指定2个条件时,例如bc.CoreID和b.Core等于变量coreVar。
现在我可能会有更多的列和变量,所以我想从一开始就把这个更正确,所以必须有一个比我下面更好的方法吗?
任何帮助都将非常感谢....
protected void Page_Load(object sender, EventArgs e)
{
coreLabel.Text = "2";
dbLabel.Text = "5";
widthLabel.Text = "54mm";
int coreVar = Convert.ToInt32(coreLabel.Text);
var gridQuery = from b in _entity.TestData
from bc in _entity.CoreData
where (bc.CoreID == (coreVar)) && (b.Core ==(coreVar))
select new {b.ID, bc.coreName};
resultGrid.DataSource = gridQuery;
resultGrid.DataBind();
}
答案 0 :(得分:0)
好的,看起来您正在寻找一种动态扩展查询的方法。
var gridQuery = from b in _entity.TestData
from bc in _entity.CoreData
select new {b.ID, bc.coreName};
if (coreVar.HasValue)
{
gridQuery = gridQuery.Where(bc.CoreID == coreVar.Value)
&& (b.Core == coreVar.value);
}
if (b.HasValue)
{
gridQuery = gridQuery.Where(bc.B == b.Value)
&& (b.B == b.Value);
}
if ....
这将为每个已定义变量的查询添加AND
条件,因此在定义更多条件时,结果将受到更多限制。