Linq加入列表

时间:2018-08-08 13:45:20

标签: c# linq

我的列表如下:

    List<int> loc = new List<int>();

我填充的

请注意,该列表存储int值。

我喜欢按如下方式将此列表加入数据库表。

我需要做的是这样的:

    var result = (from pc in db.loc_details
                  join l in loc
                  on pc.locid = loc
                  select pc).ToList();

我显然收到一个错误:无法将类型'System.Connection.Generics.List隐式转换为'int'。

执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您正试图将单个int加入整个列表

尝试

var result = (from pc in db.loc_details
              join l in loc
              on pc.locid equals l
              select pc).ToList();

尽管如果使用EF,这会给您一个不同错误,因为它无法将到内存中列表的联接转换为SQL。在这种情况下,您可以使用Contains并将其转换为IN子句:

var result = (from pc in db.loc_details
                  where loc.Contains(pc.locid)
                  select pc).ToList();

答案 1 :(得分:0)

您写道:

List<int> loc = new List<int>();
var result = (from pc in db.loc_details
              join l in loc
              on pc.locid = loc
              select pc);

回答自己:pc.LocId是什么类型? loc是什么类型? 现在看一下您的代码:

on pc.locid = loc

顺便说一句,=equals还是至少是==