如何在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?的主要内容,如果未能解决你的问题,请参考以下文章

在 AsyncTask 中将新的 TextView 设置为片段

如何在c ++中将前面的函数参数设置为其默认值?

如何在C#中将Linq to SQL数据序列化为JSON

在c#/LINQ中将数组转换为字符串的最短方法[重复]

如何在 SQL Server 中将函数设置为默认值?

如何在 LINQ sql 中将两个表与一个具有不同值的表连接起来?