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的新手,所以答案可能真的很简单。

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

试试这个。您需要将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;