C# LINQ中的order by问题

C# LINQ中的order by问题,c#,asp.net,asp.net-mvc,linq,C#,Asp.net,Asp.net Mvc,Linq,我正在从控制器传递下一个代码生成的数组: public ActionResult GetClasses(bool ajax, string kingdom) { int _kingdom = _taxon.getKingdom(kingdom); var query = (from c in vwAnimalsTaxon.All() orderby c.ClaName

我正在从控制器传递下一个代码生成的数组:

public ActionResult GetClasses(bool ajax, string kingdom)
        {
            int _kingdom = _taxon.getKingdom(kingdom);

            var query = (from c in vwAnimalsTaxon.All()
                         orderby c.ClaName
                         select new { taxRecID = c.ClaRecID, taxName = c.ClaName }).Distinct();

            return Json(query, JsonRequestBehavior.AllowGet);
        }
查询列表应该排序,但它不起作用,我在数组中得到的类的名称排序错误,因为我看到它调试名称没有排序。视图只是一个自动加载的下拉框,所以我几乎可以肯定问题出在操作上。你觉得有什么不对劲吗?我遗漏了什么吗?

试试看:

var query = (from c in vwAnimalsTaxon.All()
             select new { taxRecID = c.ClaRecID, taxName = c.ClaName }
).Distinct().OrdeyBy(c => c.ClaName);

我想gmcalab就快到了。它不起作用的原因是Distinct破坏了订单。因此,您需要使用不同的OrderBy。但这意味着您必须按新属性名称进行排序:

var query = (from c in vwAnimalsTaxon.All()
    select new { taxRecID = c.ClaRecID, taxName = c.ClaName }
).Distinct().OrderBy(t => t.taxName); 

在LINQ中,Distinct方法不能保证结果的顺序。在许多情况下,Distinct会导致OrderBy方法得到优化。因此,有必要最后一次执行OrderBy,在Distinct之后

var query = (from c in vwAnimalsTaxon.All()
             select new { taxRecID = c.ClaRecID, taxName = c.ClaName })
            .Distinct()
            .OrderBy(c => c.ClaName);

选择也将吹走排序。因此,Distinct或Select需要orderby之后。

是的,就是这样,我不知道这种情况会发生,虽然我怀疑有什么,但我不知道如何将orderby作为一种方法……谢谢,谢谢,它可以工作,尽管orderby方法中的c=>t.taxName应该是c=>t.taxName,而不是c.clame:D