将通过asp.net应用程序中的对象数据源调用此代码。 在northwind数据库中,存在一个名为Customer的表。所以我想过滤网格视图,如下所示:
如上图所示,网格视图顶部有两个下拉菜单。他们将使用ContactTitle和Country Columns过滤Gridview,所以,我已经在DAL中写了代码,如下所示:
var q = (from customers in db.Customers
select new
{
customers.ContactName,
customers.ContactTitle,
customers.City,
customers.Country,
customers.Phone,
customers.Address
});
if (!country.Equals("All")) q = q.Where(e => e.Country == country);
if (!contactTitle.Equals("All")) q = q.Where(e => e.ContactTitle == contactTitle);
所以代码工作得很好,但是这段代码会调用数据库连接三次!一个用于选择全部,第二个用于过滤国家,第三个用于过滤联系人标题,如何将此查询优化为一个查询?
我的第二个问题是:如何在不再查询的情况下删除Dropdown中的重复值?我不想使用select Distinct或其他查询....我可以这样的东西: (注意DropDowns被绑定到数据库......)
OnDataBind (e) {
if(!DropDown1.Contains(e.value)) DropDown1.Add(e.Value);
}
更新:
var q =(来自db.Customers中的客户 where(country.Equals(“All”)|| customers.Country == country)&& (contactTitle.Equals(“All”)|| customers.ContactTitle == contactTitle)
select new
{
customers.ContactName,
customers.ContactTitle,
customers.City,
customers.Country,
customers.Phone,
customers.Address
});
上面的代码会做同样但不会更快,因为第一个代码是Linq To Object!