使用搜索字符串对列表进行排序

时间:2015-09-26 02:17:31

标签: c# list sorting

我正在尝试根据搜索字符串对列表进行排序。但似乎存在一些问题。 以下是代码:

namespace ListDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee e1 = new Employee {ID=1,Name="John",City="London" };
            Employee e2 = new Employee { ID = 2, Name = "Mary", City = "NY" };
            Employee e3 = new Employee { ID = 3, Name = "Dave", City = "Sydney" };
            Employee e4 = new Employee { ID = 4, Name = "Kate", City = "Chicago" };
            Employee e5 = new Employee { ID = 5, Name = "Sheela", City = "Delhi" };
            List<Employee> listEmployee = new List<Employee>();
            listEmployee.Add(e1);
            listEmployee.Add(e2);
            listEmployee.Add(e3);
            listEmployee.Add(e4);
            listEmployee.Add(e5);

            Console.WriteLine("Enter the name via which you wana sort?");
            string searchString = Console.ReadLine();
            Console.WriteLine("####################Sorted List Starts##############");
            var items = from element in listEmployee
                        orderby element.Name.Equals(searchString)
                        select element;
            foreach (var i in items)
            {
                Console.WriteLine(i.Name);
            }
            Console.ReadLine();
        }
    }

    class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
    }
}

我有一个包含3个公共属性,ID,名称和城市的Employee类。 我创建了一个Employees列表,其中包含一些虚拟数据。

现在我希望用户输入一个搜索字符串,它实际上是一个名称,如果列表包含该名称,它应该根据搜索字符串对列表进行排序。

例如:如果用户输入的名称为“John”,则修改后的列表应将John显示为第一项,依此类推。

我写的代码行为异常。

附图: enter image description here

1 个答案:

答案 0 :(得分:4)

首先,按降序排序等于(这意味着结果将是firt),其他人按ID排序以保存原始订单(或者,您可以使用任何其他属性进行排序):

 var items = listEmployee
    .OrderByDescending(e => e.Name.Equals(searchString))
    .ThenBy(e => e.ID).ToArray();