从LINQ查询中选择多个

时间:2015-04-15 12:47:48

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller

我使用这段代码来获取我需要的ID,并将它们放在一个数组中

var userids = from a in db.Person
              select a.idlist;

string[] idarray = userids.FirstOrDefault().ToString().Split(';');

如何使用此数组的id在另一个查询中选择匹配的行,如

[HttpGet]
public ActionResult GetStuff()
{
    var Item = from a in db.Table
               where a.id == idarray[0]
               and where a.id == idarray[1]
               and where a.id == idarray[2]
               etc...
               select new
                   {
                       a.itemid,
                       a.Element
                   };

    return Json(Item, JsonRequestBehavior.AllowGet);
}

4 个答案:

答案 0 :(得分:1)

尝试这样的事情:

var Item = from a in db.Table
           where idarray.Contains(a.id)
           select new
               {
                   a.itemid,
                   a.Element
               };

答案 1 :(得分:0)

var Item = from a in db.Table
           where idarray.Contains(a.id)
           select new
               {
                   a.itemid,
                   a.Element
               }.ToArray();

答案 2 :(得分:0)

您不想使用Extension Method Lambda语法吗?我和Linq一样,但只是有更多类似代码的视图:

var Item = db.Table.Where(x => x.Contains(a.id))
           .Select(x => new
               {
                   a.itemid,
                   a.Element
               }).ToArray();

答案 3 :(得分:0)

这是我通常做的事情。

获取所需的ID:

var ids = something.Where(s => s.SomeCondition).Select(s => s.Id);

现在让我们根据Ids获取数据:

var response = anothertable.Where(a => ids.Contains(a.Id);

然后,您可以将其作为列表,数组或任何您想要使用它的内容。它将遍历anothertable中的所有记录,并查找a.Idids中的任何一个匹配的记录。