0

你能帮忙吗?

我有一个由两个表组成的数据库:TestData & Core Table TestData 有列:ID (int) Core (int) Name(NVARCHAR) 等... Table Core 有列:ID (int) CoreName (Nvarchar)

我已经设置了一个关系,以便 Testdata (testdata.Core) 中的列链接到 Core.CoreID,这样我就可以将所有核心类型保存在一个表中,并使用数字 (int) 在我的主 TestData 表中描述它们。

我使用 LINQ c# 并希望显示绑定到 gridview 的结果,它显示了内部连接的等效项,以便我最终得到一个 gridview 结果,显示 TestData 表中的 ID 和 Name 列以及 Core 表中的 CoreName。

到目前为止,我有这段代码,它似乎有效,但只有当我指定 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();

}
4

1 回答 1

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每个已定义变量的查询添加条件,因此当定义更多条件时,结果将受到更多限制。

于 2012-08-24T15:34:47.883 回答