[C#]GroupBy 和 Distinct 不工作

标签: sql json Linq C#
发布时间: 2017/2/27 5:07:40
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在进行一个 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);
    }

所以此代码返回 1000年行,我只是想按 ID 进行分组或使用不同,但他们都不工作。没有什么改变。

这是代码在 SQL ans 正在︰

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

解决方法 1:

result.Distinct()例如,返回一个新的对象,但并不改变原始 result 。此语句是因此无用的如果你不指定它或将它传递给的东西。这同样适用于 GroupByToList 。替换︰

result.Distinct();
result.GroupBy(w => w.ProcessTypeStepId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);

与︰

return Json(result.Distinct().GroupBy(w => w.ProcessTypeStepId).ToList(), JsonRequestBehavior.AllowGet);

或者至少,将 LINQ 老年退休金计划的返回的值分配给一个变量︰

result = result.Distinct();
result = result.GroupBy(w => w.ProcessTypeStepId).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
赞助商