GroupBy和Distinct不起作用

Dav*_*rum 0 c# sql linq json

我正在使用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)

xle*_*ier 7

result.Distinct()例如,返回一个新对象,但不会改变原始对象result.因此,如果您不分配或将其传递给某些内容,则此语句无效.同样适用于GroupByToList.更换:

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)