我有两张表deal_outlet
和vendors_outlet
。我试图将outlet_id
从deal_outlet
表到供应商表的列表进行比较,但.contain
方法显示错误有一些无效的参数。我真的不明白这段代码中的问题。
public ActionResult Detail_of_deal(int id)
{
var d1 = db.deal_outlet.Where(x => x.outlet_id==id).ToList();
f_model.model4 = db.vendors_outlet.Where(x =>d1.Contains(x.outlet_id)).ToList();
var d = obj.detail_of_image(id,ref model);
return View(f_model);
}
答案 0 :(得分:0)
根据代码的目标,您可以尝试以下方法:
public ActionResult Detail_of_deal(int id)
{
var d1 = db.deal_outlet.Where(x => x.outlet_id==id).ToList();
f_model.model4 = db.vendors_outlet.AsEnumerable().Select(x => d1.Contains(x.outlet_id)).ToList();
var d = obj.detail_of_image(id,ref model);
return View(f_model);
}
这应该使f_model.model4
列出所有匹配vendors_outlet
的{{1}}
答案 1 :(得分:0)
如果列表包含传入的项,则Linq Contains
方法返回true。您要查看deal_outlet
个对象的列表是否包含{{1} },显然它不会。
不是投射int
的集合,而是投射整数列表:
deal_outlet
但从逻辑上讲,这与:
相同var d1 = db.deal_outlet.Where(x => x.outlet_id==id).Select(x => x.outlet_id);
f_model.model4 = db.vendors_outlet.Where(x =>d1.Contains(x.outlet_id)).ToList();
所以你不清楚自己要做什么。
修改
根据您的评论,我相信这些是您想要的查询:
我正在尝试从deal_outlet表中获取outlet_id列表,其中deal_id等于id,
f_model.model4 = db.vendors_outlet.Where(x =>x.outlet_i==id)).ToList();
现在想要将此列表与vendor_outlet表进行比较,并获取那些来自deal_outlet表的outlet_id等于vendor_outlet表中的outlet_id的行
获取要匹配的ID列表:
var d1 = db.deal_outlet.Where(x => x.deal_id==id).ToList();
并使用var ids = d1.Select(x => x.outlet_id).ToList();
查看列表是否包含相关表格中的任何ID:
Contains