Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 列表仅返回最后一项mvc 4_Asp.net Mvc_Linq_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 列表仅返回最后一项mvc 4

Asp.net mvc 列表仅返回最后一项mvc 4,asp.net-mvc,linq,asp.net-mvc-4,Asp.net Mvc,Linq,Asp.net Mvc 4,下面是我的操作方法。它只返回列表的最后一项。但我想要列表中的项目列表 public ActionResult Ataxi(){ List<sub_employee> AList = new List<sub_employee>(); var alist = IM.getAvailableList().ToList(); foreach(var item in alist) { ALi

下面是我的操作方法。它只返回列表的最后一项。但我想要列表中的项目列表

public ActionResult Ataxi(){
        List<sub_employee> AList = new List<sub_employee>();
        var alist = IM.getAvailableList().ToList();
        foreach(var item in alist)
        {
             AList = db.sub_employee.Where(s => s.SE_ID == item).ToList();
        }
        return View(AList);

    }

public ActionResult Ataxi(){
列表列表=新列表();
var alist=IM.getAvailableList().ToList();
foreach(列表中的var项目)
{
AList=db.sub_employee.Where(s=>s.SE_ID==item.ToList();
}
返回视图(AList);
}

如何获取列表中的所有元素。有人能帮我解决这个问题吗。谢谢你

我想你想要这样的东西:

public ActionResult Ataxi(){
    var list1 = IM.getAvailableList().ToList();
    var list2 = db.sub_employee
        .Where(x => list1.Contains(x.Id))
        .ToList();
    return View(list2);
}
在您的示例中,您不断覆盖列表的值。您还可以针对原始列表中的每一项,对照
db.sub_employee
,检查
Where
,这很难阅读,效率也不高。实际上,您只需使用
Where
一次即可过滤其键不在列表中的值。请注意,在
中使用
Contains
效率极低,但编写起来很简单,不需要创建新的LINQ操作符


另外,在风格方面,我会避免以大写字母(
Alist
)开头局部变量名,尤其是避免仅以大写字母开头的局部变量(
Alist
vs
Alist
)。相反,以大写字母(
sub_employee
)开头命名类型和属性是标准做法。

foreach
循环的每次迭代中,您都会不断覆盖
AList
的值。最好的猜测是你想要的是
Alist.AddRange(…)
我想要的是所有与Alist和sub_employee模型类相交的元素如果不知道你的模型或你的查询返回什么,没有人能帮上忙。我假设您想要
AList.AddRange(db.sub_employee.Where(s=>s.SE_ID==item))
public ActionResult Ataxi(){List AList=new List();var AList=IM.getAvailableList().ToList();foreach(AList中的var项){AList.AddRange(db.sub_employee.Where(s=>s.SE_ID==item));}返回视图(列表);}
还更正了什么是Id?它不存在。我真的很感谢你对我的问题的解释。对新手来说,学习基础知识很棒。我在写
Id
时是指
SE\u Id
。不过,你不需要在循环中调用
AddRange
,你可以使用LINQ来完成整个事情。
var-AList=IM.getAvailableList()。选择(item=>db.sub_employee.Where(s=>s.SE_ID==item));