我使用带有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的新手,所以答案可能真的很容易。
答案 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)
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;