Linq 查询(过滤,哪里,如果)
Linq query(Filter, where, if)
我想把填入问题的变量放在where条件中。我该如何使用 Linq?
运行查询;
query = db.Kisi.Where(item => item.KAYITTIPI == registerType)
.Where(item => item.ADI.Contains(name))
.Where(item => item.SOYADI.Contains(surname))
.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
我想做;
var query = db.Kisi.Where(item => item.KAYITTIPI == registerType)
if (String.IsNullOrEmpty(name))
{
.Where(item => item.ADI.Contains(name))
}
else if (String.IsNullOrEmpty(surname))
{
.Where(item => item.SOYADI.Contains(surname))
}
.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
错误;
State Error CS0103 The name 'Where' does not exist in the current context
您可以在单独的语句中编写 LINQ 查询,它们在您调用 ToList
:
之前不会执行
IQueryable<Kisi> query = db.Kisi.Where(item => item.KAYITTIPI == registerType);
if (!String.IsNullOrEmpty(name))
{
query = query.Where(item => item.ADI.Contains(name))
}
if (!String.IsNullOrEmpty(surname))
{
query = query.Where(item => item.SOYADI.Contains(surname))
}
var result = query.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
为什么不将所有表达式放在一个布尔表达式中?
var result = db.Kisi.Where(item => (item.KAYITTIPI == registerType)
&& (!String.IsNullOrEmpty(name)) || item.ADI.Contains(name))
&& (!String.IsNullOrEmpty(surname) || item.SOYADI.Contains(surname))
&& item.UNVAN.Contains(title))
.OrderBy(...)
.Skip(...)
.Take(...);
我想把填入问题的变量放在where条件中。我该如何使用 Linq?
运行查询;
query = db.Kisi.Where(item => item.KAYITTIPI == registerType)
.Where(item => item.ADI.Contains(name))
.Where(item => item.SOYADI.Contains(surname))
.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
我想做;
var query = db.Kisi.Where(item => item.KAYITTIPI == registerType)
if (String.IsNullOrEmpty(name))
{
.Where(item => item.ADI.Contains(name))
}
else if (String.IsNullOrEmpty(surname))
{
.Where(item => item.SOYADI.Contains(surname))
}
.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
错误;
State Error CS0103 The name 'Where' does not exist in the current context
您可以在单独的语句中编写 LINQ 查询,它们在您调用 ToList
:
IQueryable<Kisi> query = db.Kisi.Where(item => item.KAYITTIPI == registerType);
if (!String.IsNullOrEmpty(name))
{
query = query.Where(item => item.ADI.Contains(name))
}
if (!String.IsNullOrEmpty(surname))
{
query = query.Where(item => item.SOYADI.Contains(surname))
}
var result = query.Where(item => item.UNVAN.Contains(title))
.OrderBy(item => item.ID)
.Skip(page)
.Take(top)
.ToList();
为什么不将所有表达式放在一个布尔表达式中?
var result = db.Kisi.Where(item => (item.KAYITTIPI == registerType)
&& (!String.IsNullOrEmpty(name)) || item.ADI.Contains(name))
&& (!String.IsNullOrEmpty(surname) || item.SOYADI.Contains(surname))
&& item.UNVAN.Contains(title))
.OrderBy(...)
.Skip(...)
.Take(...);