Linq按字母顺序排序

时间:2014-05-15 21:25:13

标签: c# asp.net linq

我有一个产品表,希望按字母顺序排序数据。但是当我写这个查询时,他们仍然是来自id。我在谷歌检查了很多页面,但无法找到任何来源。

var product = Db.tablename
                .Where(s => s.colum == DropDownList2.SelectedValue)
                .OrderBy(s=> s.Name);

2 个答案:

答案 0 :(得分:18)

此查询

var product = Db.tablename
                .Where(s => s.colum == DropDownList2.SelectedValue)
                .OrderBy(s=> s.Name);

在被要求之前不会被执行。因此,您必须将其更改为以下内容:

var product = Db.tablename
                .Where(s => s.colum == DropDownList2.SelectedValue)
                .OrderBy(s=> s.Name).ToList();

发生这种情况的原因是实际上你刚刚声明了一个查询。我的意思是你还没有执行它。这就是LINQ查询的本质,在技术术语中称为默认执行。另一方面,如果在查询结束时调用ToList()方法,则会触发立即执行此查询,并且其结果将是List相同类型的s.Name {{1}}。

答案 1 :(得分:1)

您必须使用ToList执行排序。

var product = Db.tablename
                .Where(s => s.colum == DropDownList2.SelectedValue)
                .OrderBy(s=> s.Name).ToList();

order by不执行任何操作,只执行查询,ToList将对原始查询进行排序。