using System.Collections.Generic;
public static void Main()
string searchToken = "fo";
List<Emp> emps = new List<Emp> { new Emp { Name = "fooz" },new Emp { Name = "foo" }, new Emp { Name = "bar" }, new Emp { Name = "afoo" }, new Emp { Name = "afooz" } };
var matches = emps.Where(x=>x.Name.Contains(searchToken))
.Select(x=> new {Emp = x, Score = (x.Name.StartsWith(searchToken)==true)})
.OrderByDescending(x=>x.Score)
foreach (var item in matches)
Console.WriteLine(item.Emp.Name);
public string Name { get; set; }