Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 订购一个对象';s列表_C#_Asp.net - Fatal编程技术网

C# 订购一个对象';s列表

C# 订购一个对象';s列表,c#,asp.net,C#,Asp.net,我有一个对象列表,其中对象有两个属性:id和name。我必须按物品的名称对清单进行排序 我怎样才能做到这一点?您是否尝试过使用linq using System.Collections.Generic; using System.Linq; namespace Demo { public class Test { public void SortTest() { var myList = new List<Item

我有一个对象列表,其中对象有两个属性:
id
name
。我必须按物品的名称对清单进行排序


我怎样才能做到这一点?

您是否尝试过使用linq

using System.Collections.Generic;
using System.Linq;

namespace Demo
{ 
    public class Test
    {
        public void SortTest()
        {
            var myList = new List<Item> { new Item { Name = "Test", Id = 1 }, new Item { Name = "Other", Id = 1 } };
            var result = myList.OrderBy(x => x.Name);
        }
    }

    public class Item
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }
}
使用System.Collections.Generic;
使用System.Linq;
名称空间演示
{ 
公开课考试
{
公共无效排序集()
{
var myList=new List{new Item{Name=“Test”,Id=1},new Item{Name=“Other”,Id=1};
var result=myList.OrderBy(x=>x.Name);
}
}
公共类项目
{
公共字符串名称{get;set;}
公共int Id{get;set;}
}
}

您尝试过使用linq吗

using System.Collections.Generic;
using System.Linq;

namespace Demo
{ 
    public class Test
    {
        public void SortTest()
        {
            var myList = new List<Item> { new Item { Name = "Test", Id = 1 }, new Item { Name = "Other", Id = 1 } };
            var result = myList.OrderBy(x => x.Name);
        }
    }

    public class Item
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }
}
使用System.Collections.Generic;
使用System.Linq;
名称空间演示
{ 
公开课考试
{
公共无效排序集()
{
var myList=new List{new Item{Name=“Test”,Id=1},new Item{Name=“Other”,Id=1};
var result=myList.OrderBy(x=>x.Name);
}
}
公共类项目
{
公共字符串名称{get;set;}
公共int Id{get;set;}
}
}

如果有内置的方法来实现这一点,那么Linq就太过分了

如果您指的是数组,只需使用
array.Sort

Array.Sort(items, (x, y) => x.Name.CompareTo(y.Name));
如果您指的是
列表
,请在此处使用
排序
功能:

items.Sort((x, y) => x.Name.CompareTo(y.Name));

当有内置的方法来实现这一点时,Linq就显得过分了

如果您指的是数组,只需使用
array.Sort

Array.Sort(items, (x, y) => x.Name.CompareTo(y.Name));
如果您指的是
列表
,请在此处使用
排序
功能:

items.Sort((x, y) => x.Name.CompareTo(y.Name));

如果要处理这些对象的列表,最简单的方法是提供与排序方法的比较:

var list = new List<MyObject>();
...
list.Sort((item1, item2) => item1.Name.CompareTo(item2.Name));
var list=newlist();
...
list.Sort((item1,item2)=>item1.Name.CompareTo(item2.Name));
(上面的示例没有对名称进行空检查)


这很好,也很简单,因为字符串实现了
IComparable
。另一种方法是在类上实现
IComparable
,然后只需调用
list.Sort()

如果要处理这些对象的列表,最简单的方法是提供排序方法的比较:

var list = new List<MyObject>();
...
list.Sort((item1, item2) => item1.Name.CompareTo(item2.Name));
var list=newlist();
...
list.Sort((item1,item2)=>item1.Name.CompareTo(item2.Name));
(上面的示例没有对名称进行空检查)


这很好,也很简单,因为字符串实现了
IComparable
。另一种方法是在类上实现
IComparable
,然后只需调用
list.Sort()

类的
Sort
方法有一个重载,用于进行自定义比较:

list.Sort((x,y) => x.Name.CompareTo(y.Name));

List
类的
Sort
方法有一个重载,用于进行自定义比较:

list.Sort((x,y) => x.Name.CompareTo(y.Name));

再多一点关于对象的信息就有帮助了。再多一点关于对象的信息就有帮助了。+1用于使用本机列表支持进行排序,而不是进入Linq(并不是说Linq有什么问题,但在这种情况下,这是对IMHO的过度杀戮,也没有给出更清晰的目的)使用内置支持是正确的,但正如其他人所说,它不考虑空案例。。。现在您可以更改上面的代码来处理这些情况,但是代码不再那么干净了。然后在简单的orderby和上面的空检查之间进行选择。。。“在这种情况下,哪一个更好,我还在犹豫之中……”anthonyv——所有的观点都是正确的。是的,一旦你把空签入,它确实会失去一些简洁性。不过-很高兴看到人们提出了几种不同的解决方案。@Rob完全同意您的观点,即有不止一个答案:)+1用于使用本机列表支持进行排序,而不是突破Linq(并不是说Linq有什么问题,但在这种情况下,这是对IMHO的过度杀戮,也没有给出更清晰的目的)使用内置支持是正确的,但正如其他人所说,它不处理空案例…现在你可以更改上面的内容来处理这些案例,但代码不再那么干净。然后,在简单的orderby和上面带有空检查的orderby之间进行选择…我在犹豫在这种情况下哪个更好…@anthonyv-所有的观点都是正确的。是的,一旦你把空值签入,它确实会失去一些简洁性。尽管如此,看到人们把几种不同的解决方案摆在桌面上还是很好的。@Rob完全同意你的观点,有不止一个答案:)