ASP.net LINQ:返回id等于变量的项

时间:2011-12-09 20:27:29

标签: c# asp.net linq

我使用带有webforms的asp.net c#,我使用dal + bll结构。这是我的情况:

我有一个带8个按钮的起始页面,当我点击其中一个按钮时,我转到页面list.aspx。

在此页面上,使用此LINQ代码从数据库返回数据:

    var result = (from b in dc.Businesses
                  select b).ToList();
    return result;

这一切都可行。但是,我想这样做,如果我点击button1,只返回businessType为“NighShop”的记录。当我点击button2时,只返回idName为“Bar”的记录等。为此制作8个不同的页面+ DAL& BLL是愚蠢的。

所以我认为LINQ(在DALBusiness.cs类层中)应该是这样的:

    var result = (from b in dc.Businesses where b.BusinessType == aVariableValue
                  select b).ToList();
    return result;

只要用户按下8个按钮之一,就可以更改variableValue。但我没有这方面的经验,所以我不知道怎么做= /谁可以帮忙?谢谢!

当我按下一个按钮(在索引页面上)时,我试图声明var:

public void Button1_Click(object sender, EventArgs e)
{
    var keuze = "Nachtwinkel";
}

但如果我尝试:

public IList<Business> selectAll()
{
    var result = (from b in dc.Businesses where b.BusinessType == keuze
                  select b).ToList();
    return result;
}

在DALBusiness.cs类层上,它不知道var keuze。我是asp.net的新手,所以答案可能真的很容易。

4 个答案:

答案 0 :(得分:2)

如果它不知道该变量尝试制作一个方法而不是比较 anIdVariable会像这样工作,它与Linq是一样的,但更多的是一种方法格式就像一个例子

public bool FilterByBusinessTypeID(dc.Business dcBusiness)
{
   return dcBusiness.ID == anIdVariable;
}
var result= BusinessType.Where(FilterByBusinessTypeID).First(); 

答案 1 :(得分:2)

试试这个。您需要将Keuze值存储在SelecAll()可访问的位置。

public void Button1_Click(object sender, EventArgs e)
{
     Session["keuze"] = "Nachtwinkel";
}

public IList<Business> selectAll()
{
    var result = (from b in dc.Businesses where b.BusinessType == Session["keuze"]
                  select b).ToList();
    return result;
}

答案 2 :(得分:2)

<}>在LINQ查询中,它会将引用计算为已键入。如果指定b.BusinessType == x并且您具有类型或实体“BusinessType”,则需要传递对象引用(即x必须键入“BusinessType”)。您可以通过执行以下操作来解决此问题:

//this line in your OnClick function
keuze = "MyBusinessTypeName";

//this line in your data handler
var result = (from b in dc.Businesses where b.BusinessType.BusinessTypeName == keuze
              select b).ToList();

正如Erix所说,keuze变量需要两者都可以访问。希望有所帮助。

答案 3 :(得分:1)

您是否只想比较Id的意思:

var result = (from b in dc.Businesses where b.BusinessType.Id == anIdVariable
              select b).ToList();
return result;