使用类似以下语句从表中读取数据:
var records = db.Logs;
将会使应用程序非常缓慢。它会一次性加载所有记录。
我需要通过多个条件对结果进行筛选,例如:
if (UserID != null)
{
records = records.Where(r => r.User == UserID);
}
if (UserIP != null)
{
records = records.Where(r => r.IP == UserIP);
}
问题在于我第一次从表中读取数据将会获取所有记录,会导致应用程序非常缓慢。
是否有办法在LINQ语句中设置条件(如if、switch),就像我们在SQL语句中所做的那样?
以下是旧逻辑的创建方式:
string sql = "SELECT * FROM Log WHERE 1=1";
if (UserID != null)
{
sql += " AND User = '" + UserID + "'";
}
if (UserIP != null)
{
sql += " AND IP = '" + UserIP + "'";
}
sqlCmd.query(sql);
IQueryable
强制转换为IEnumerable
或者使用ToList()
。 - bzlm