Asp.net mvc 3 如何定义一个列表以在循环中添加查询结果?
我有一个填充了长类型值的数组,对于数组中的每个值,我需要实现一个查询。我使用了foreach循环,从下面的代码中可以看出: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
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();