C# 遍历列表的动态linq查询
因此,尝试迭代一个会话键,将所有这些值添加到一个列表中,然后将每个值与数据库表进行比较,如果productid=id from值,那么我希望它在查询中返回该值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 ?
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