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 3 如何定义一个列表以在循环中添加查询结果?_Asp.net Mvc 3_Linq_List_Foreach_Add - Fatal编程技术网

Asp.net mvc 3 如何定义一个列表以在循环中添加查询结果?

Asp.net mvc 3 如何定义一个列表以在循环中添加查询结果?,asp.net-mvc-3,linq,list,foreach,add,Asp.net Mvc 3,Linq,List,Foreach,Add,我有一个填充了长类型值的数组,对于数组中的每个值,我需要实现一个查询。我使用了foreach循环,从下面的代码中可以看出: var result; foreach(long id in PrdIdArr) { var mainQuery = (from o in db.OPERATIONs join u in db.UNITs on o.OP_UNIT_ID equals u.UNI

我有一个填充了长类型值的数组,对于数组中的每个值,我需要实现一个查询。我使用了foreach循环,从下面的代码中可以看出:

var result;
        foreach(long id in PrdIdArr)
        {
            var mainQuery = (from o in db.OPERATIONs
                             join u in db.UNITs on o.OP_UNIT_ID equals u.UNIT_ID into smt
                             from s in smt
                             join x in db.XIDs on s.UNIT_ID equals x.UNIT_ID
                             where o.OP_OT_CODE == OtCode
                             where x.IDTYP_CD == "BSN"
                             where s.START_PRD_ID == id
                             where o.OP_UPD_DATE >= _StartDate
                             where o.OP_UPD_DATE <= _EndDate
                             select new
                             {
                                 o.OP_ID,
                                 o.OP_UPD_DATE,
                                 x.EXTERNAL_ID,
                                 o.OP_OS_CODE,
                                 o.OP_START,
                                 o.OP_ST_STATION,
                                 s.START_PRD_ID
                             }).Take(_RowNumber);
            //var result = mainQuery.ToList();
            result.add(mainQuery.ToList());
        }

        data = this.Json(result);
        data.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        return data;
var结果;
foreach(PrdIdArr中的长id)
{
var mainQuery=(从db.OPERATIONs中的o开始)
在o.OP_UNIT_ID等于u.UNIT_ID的db.UNITs中加入u到smt中
来自smt中的s
在s.UNIT\u ID等于x.UNIT\u ID的db.XIDs中加入x
其中o.OP_OT_CODE==OtCode
其中x.IDTYP_CD==“BSN”
其中s.START\u PRD\u ID==ID
其中o.OP_UPD_DATE>=\u StartDate
o.OP_更新日期在哪里
如何定义您在代码开头看到的列表

制造

转换为一个具体的类型(比如说
QueryResult
,尽管比这更具体一些),然后声明

var result = new List<QueryResult>();

进入

var result=newlist();
foreach(PrdIdArr中的长id)
{
....
Add(mainQuery.ToList());
}

只需在外部创建具有相同属性名和正确类型的匿名类型即可

var result = Enumerable.Range(0, 0).Select(x => new 
             {
               OP_ID = 1,
               OP_UPD_DATE = DateTime.Now,
               EXTERNAL_ID = 1,
               OP_OS_CODE = 1,
               OP_START = DateTIme.Now,
               OP_ST_STATION = "",
               START_PRD_ID = 1,
             }).ToList();
在循环中调用
AddRange

result.AddRange(mainQuery.ToList());
您可以这样做:

var result = PrdIdArr.Select(id =>
    from o in db.OPERATIONs
        join u in db.UNITs on o.OP_UNIT_ID equals u.UNIT_ID into smt
        from s in smt
        join x in db.XIDs on s.UNIT_ID equals x.UNIT_ID
        where o.OP_OT_CODE == OtCode
        where x.IDTYP_CD == "BSN"
        where s.START_PRD_ID == id
        where o.OP_UPD_DATE >= _StartDate
        where o.OP_UPD_DATE <= _EndDate
        select new
        {
            o.OP_ID,
            o.OP_UPD_DATE,
            x.EXTERNAL_ID,
            o.OP_OS_CODE,
            o.OP_START,
            o.OP_ST_STATION,
            s.START_PRD_ID
        }
        .Take(_RowNumber)
        .ToList()
    ).ToList();
var result=PrdIdArr.Select(id=>
从数据库操作中的o开始
在o.OP_UNIT_ID等于u.UNIT_ID的db.UNITs中加入u到smt中
来自smt中的s
在s.UNIT\u ID等于x.UNIT\u ID的db.XIDs中加入x
其中o.OP_OT_CODE==OtCode
其中x.IDTYP_CD==“BSN”
其中s.START\u PRD\u ID==ID
其中o.OP_UPD_DATE>=\u StartDate

where o.OP_UPD_DATE确保不要在操作方法中直接查询DB。为此创建一个存储库类。这将有助于保持项目的整洁,并将重点放在控制器中真正需要做的事情上。当我使用()时,它在“result.Add(mainQuery.ToList());”行给出错误:“Systems.Collections.Generic:List”不包含“add”的定义,并且没有接受“Systems.Collections.Generic:List”类型的第一个参数的扩展方法“add”。“add”必须是“add”“!C#区分大小写。很抱歉,您当然需要使用AddRange方法,它将添加多个对象。add将只添加一个对象。
where PrdIdArr.Contains(s.Start_PRD_ID)
var result = new List<object>();

    foreach(long id in PrdIdArr)
    {
        ....

        result.Add(mainQuery.ToList());
    }
var result = Enumerable.Range(0, 0).Select(x => new 
             {
               OP_ID = 1,
               OP_UPD_DATE = DateTime.Now,
               EXTERNAL_ID = 1,
               OP_OS_CODE = 1,
               OP_START = DateTIme.Now,
               OP_ST_STATION = "",
               START_PRD_ID = 1,
             }).ToList();
result.AddRange(mainQuery.ToList());
var result = PrdIdArr.Select(id =>
    from o in db.OPERATIONs
        join u in db.UNITs on o.OP_UNIT_ID equals u.UNIT_ID into smt
        from s in smt
        join x in db.XIDs on s.UNIT_ID equals x.UNIT_ID
        where o.OP_OT_CODE == OtCode
        where x.IDTYP_CD == "BSN"
        where s.START_PRD_ID == id
        where o.OP_UPD_DATE >= _StartDate
        where o.OP_UPD_DATE <= _EndDate
        select new
        {
            o.OP_ID,
            o.OP_UPD_DATE,
            x.EXTERNAL_ID,
            o.OP_OS_CODE,
            o.OP_START,
            o.OP_ST_STATION,
            s.START_PRD_ID
        }
        .Take(_RowNumber)
        .ToList()
    ).ToList();