Best Overloaded方法匹配有一些无效的参数

时间:2018-02-05 03:15:36

标签: asp.net-mvc

我有两张表deal_outletvendors_outlet。我试图将outlet_iddeal_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);
}

2 个答案:

答案 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