如何在c#中将值设置为linq?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在c#中将值设置为linq?相关的知识,希望对你有一定的参考价值。
我是lambda表达式的新手。我想拥有所有具有数字6的status_ID的计数。然后我想将其转换为列表。为查询设置值的正确语法是什么?我在SQL中知道它,但在lambda表达式中却不知道。
return ContextHelperSlowly<Moi>.GetCount(false, x => x.Status_ID == 6).ToList();
亲切的问候
更新
public static int GetCount(Func<T, bool> where, params Expression<Func<T, object>>[] navigationProperties)
{
int list;
using (var context = GetContext())
{
IQueryable<T> dbQuery = context.Set<T>();
if (null != navigationProperties)
{
foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
{
dbQuery = dbQuery.Include(navigationProperty);
}
}
if (null == where)
{
where = arg => true;
}
list = dbQuery
.Where(x => x.Date_Deleted == null && x.End_Validity == null)
.Where(where)
.Count();
}
return list;
}
答案
你为什么要自己编写这些函数?
这将为您提供Status_ID = 6的项目数:
yourList.Count(x => x.Status_ID == 6);
这将为您提供Status_ID = 6的所有条目的列表:
yourList.Where(x => x.Status_ID == 6).ToList();
还有一点关于“代码风格”的注意事项。您可以随意执行此操作,但C#standard对于属性应为“StatusId”。
另一答案
我只是将你的GetCount方法更改为GetList:
public static List<T> GetList(Func<T, bool> where, params Expression<Func<T, object>>[] navigationProperties)
{
using (var context = GetContext())
{
IQueryable<T> dbQuery = context.Set<T>();
if (null != navigationProperties)
{
foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
{
dbQuery = dbQuery.Include(navigationProperty);
}
}
if (null == where)
{
where = arg => true;
}
return dbQuery
.Where(x => x.Date_Deleted == null
&& x.End_Validity == null
&& where(x))
.ToList();
}
}
并使用:
return ContextHelperSlowly<Moi>.GetList(false, x => x.Status_ID == 6);
要将计数作为int:
return ContextHelperSlowly<Moi>.GetList(false, x => x.Status_ID == 6).Count;
以上是关于如何在c#中将值设置为linq?的主要内容,如果未能解决你的问题,请参考以下文章