我正在使用C#和linQ开发一个项目.我想从BDD返回一个JsonList.一切都很好,直到我尝试分组,每个id只有一次(我也可以使用不同的).这是代码:
[HttpPost]
public ActionResult ProcessTypeStep()
{
var result = from a in db.ProcessTypeStep
join b in db.ProcessStep on a.ProcessTypeStepId equals b.ProcessTypeStepId
join c in db.ProcessStepOwner on b.ProcessStepId equals c.ProcessStepId
join e in db.ProcessTypeStepDesc on a.ProcessTypeStepId equals e.ProcessTypeStepId
select new { e.ProcessTypeStepId, e.ShortDescription };
result.Distinct();
result.GroupBy(w => w.ProcessTypeStepId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
所以这段代码返回1000行,我只想按ID分组或使用distinct,但两者都不起作用.没有什么变化.
这是SQL中的代码,它正在工作:
select a.ProcessTypeStepId,e.ShortDescription
from ProcessTypeStep a
INNER join ProcessStep b on a.ProcessTypeStepId = b.ProcessTypeStepId
INNER join ProcessStepOwner c on b.ProcessStepId = c.ProcessStepId
INNER JOIN ProcessTypeStepDesc e on e.ProcessTypeStepId =a.ProcessTypeStepId
GROUP BY a.ProcessTypeStepId,e.ShortDescription
Run Code Online (Sandbox Code Playgroud)
result.Distinct()例如,返回一个新对象,但不会改变原始对象result.因此,如果您不分配或将其传递给某些内容,则此语句无效.同样适用于GroupBy或ToList.更换:
result.Distinct();
result.GroupBy(w => w.ProcessTypeStepId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
附:
return Json(result.Distinct().GroupBy(w => w.ProcessTypeStepId).ToList(), JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
或者至少将LINQ操作的返回值赋给变量:
result = result.Distinct();
result = result.GroupBy(w => w.ProcessTypeStepId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)