根據以前的做法是拼接sql語句,這會增加維護成本,因為sql語句里的內容不會報錯,所以在使用ef的時候必須要拋棄拼接sql語句的習慣。 構建實例 構建搜索條件 參數過濾 很多情況下查詢到的結果並不能滿足我們的需要,還需要進行一些處理,這裡需要用linq ...
根據以前的做法是拼接sql語句,這會增加維護成本,因為sql語句里的內容不會報錯,所以在使用ef的時候必須要拋棄拼接sql語句的習慣。
構建實例
List<vyw_user> list = null;
IQueryable<vyw_user> result = Ctx.vyw_user;//Ctx表示EF上下文
構建搜索條件
if (!string.IsNullOrEmpty(mobile) || !string.IsNullOrEmpty(usertype) || !string.IsNullOrEmpty(logintimestart) || !string.IsNullOrEmpty(logintimeend)) //搜索情況 假設有四個條件
{
#region 搜索情況
if (mobile.Trim().Length > 0)//手機號碼
{
result = result.Where(c => c.mobile.Contains(mobile));
}
int usertypeid = Convert.ToInt32(usertype);
if (usertypeid != -1)//用戶類型
{
result = result.Where(c => c.userType == usertypeid);
}
if (logintimestart.Trim().Length > 0 && logintimeend.Trim().Length > 0)//搜索查詢時間
{
DateTime bstart = Convert.ToDateTime(logintimestart);
DateTime bend = Convert.ToDateTime(logintimeend);
result = result.Where(c => c.loginTime >= bstart && c.loginTime <= bend);
}
#endregion
}
執行數據查詢
count = result.Where(c => true).Count();//數據的統計
list = result.Where(c => true).ToList();//數據查詢
參數過濾
很多情況下查詢到的結果並不能滿足我們的需要,還需要進行一些處理,這裡需要用linq
var list1 = from d in list
select new
{
userID = d.userID,
mobile = d.mobile,
userType = Enum.GetName(typeof(Enum_userType), d.userType),
fund = d.fund,
certifyName = d.certifyName,
certifyNo = d.certifyNo,
isCertify = Enum.GetName(typeof(Enum_cetifyType), d.isCertify),
certifyTime = d.certifyTime == null ? "" : Convert.ToDateTime(d.certifyTime).ToString("yyyy-MM-dd HH:mm:ss"),
signTime = Convert.ToDateTime(d.signTime).ToString("yyyy-MM-dd HH:mm:ss"),
loginTime = d.loginTime == null ? "" : Convert.ToDateTime(d.loginTime).ToString("yyyy-MM-dd HH:mm:ss")
};