Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 遍历列表的动态linq查询_C#_Linq_Entity Framework - Fatal编程技术网

C# 遍历列表的动态linq查询

C# 遍历列表的动态linq查询,c#,linq,entity-framework,C#,Linq,Entity Framework,因此,尝试迭代一个会话键,将所有这些值添加到一个列表中,然后将每个值与数据库表进行比较,如果productid=id from值,那么我希望它在查询中返回该值 List<product> products = new List<product>(); if (Session != null) { List<int> ids = Session["myIds"] != null ?

因此,尝试迭代一个会话键,将所有这些值添加到一个列表中,然后将每个值与数据库表进行比较,如果productid=id from值,那么我希望它在查询中返回该值

 List<product> products = new List<product>();
            if (Session != null)
            {
                List<int> ids = Session["myIds"] != null ? (List<int>)Session["myIds"] : null;
                if (ids != null)
                {

                    //var grabProducts = db.products.Where(p => p.product_id == ids[0]);
                    foreach (int id in ids)
                    {
                        //ListBox1.Items.Add(String.Format("select * from customer where id={0}", id));

                        //int newd = id;
                        prodIds.Add(id);


                    }
                    for (int i = 0; i < prodIds.Count; i++)
                    {
                        int newd = prodIds[i];
                        products = db.products.Where(p => p.product_id == newd).ToList();
                    }

                    var grabProducts = products;
                    return View(grabProducts.ToList().ToPagedList(page ?? 1, 6));
                }
            }
“db”是我的EF模型的一个实例,prodIds是一个声明为全局的列表

基本上,这只是让我从列表中得到最后一个产品,这是有意义的,因为我不是在宣传“产品”,我只是每次都在重新说明它。我怎样才能做到这一点

我尝试了一个products.Adddb.products.Wherep=>p.product\u id==newd.ToList;在没有占上风的情况下,我尝试使用常见的C语法来cantonate products+=db.products.Wherep=>p.product_id==newd.ToList;也没有占上风


同样,我尝试遍历包含id值的INT列表,然后我想执行linq查询,查看数据库中的哪些值与id值product_id=id值中的值匹配,并以“product”列表的形式返回所有值product是一个类,所以我找到了答案。为此,您需要使用“Contains”运算符。详情如下:

                var test = prodIds.Cast<int>().ToList();
                var grabProducts = db.products.OrderBy(p => p.product_id).Where(p => test.Contains(p.product_id));
万一其他人遇到这个问题,只需声明一个var来转换您需要的任何数据类型。然后执行查询,在.Where选择中,您可以执行我所做的操作,并添加一个查询,如果一行包含列表中的任何值,则返回该值。但是,在Where之前,您需要一个OrderBy