ASP.net LINQ:返回id等于变量的项
本文关键字:变量 于变量 LINQ net 返回 id ASP | 更新日期: 2023-09-27 18:17:16
我在webforms中使用asp.net c#,我使用dal+ ll结构。这是我的情况:
我有一个有8个按钮的起始页,当我点击其中一个按钮时,我进入一个页面列表。aspx。
在此页面上,有从数据库返回的数据,LINQ代码如下:
var result = (from b in dc.Businesses
select b).ToList();
return result;
这些都可以正常工作。但是,我想这样做,当我单击button1时,只返回具有businessType"NighShop"的记录。当我点击button2,只有记录与idName"栏"返回等。如果为此制作8个不同的页面,那就太愚蠢了。
所以我认为LINQ(在DALBusiness.cs类层)应该是这样的:
var result = (from b in dc.Businesses where b.BusinessType == aVariableValue
select b).ToList();
return result;
这个变量值可以在用户按下8个按钮中的一个时被改变。但是我没有这方面的经验,所以我不知道怎么做。
当我按下一个按钮(在索引页上)时,我试图声明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类层上,它不知道变量keuze。我是asp.net的新手,所以答案可能真的很简单。
试试这个。您需要将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;
}
在LINQ查询中,它将按类型计算引用。如果您指定b.BusinessType == x
,并且您有一个类型或实体"businessstype",则需要传递对象引用(即x必须键入"businessstype")。您可以通过执行以下操作来解决这个问题:
//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变量需要对两者都可访问。
如果它不知道该变量,则尝试创建一个与anIdVariable
会像这样工作它和Linq是一样的但是更像一个方法格式的例子
public bool FilterByBusinessTypeID(dc.Business dcBusiness)
{
return dcBusiness.ID == anIdVariable;
}
var result= BusinessType.Where(FilterByBusinessTypeID).First();
你的意思是只是比较的Id像:
var result = (from b in dc.Businesses where b.BusinessType.Id == anIdVariable
select b).ToList();
return result;