关于使用Linq订购数据,我需要朝着正确的方向努力。
我在C#中有一个People对象列表,而这些对象又包含了该人可能关联的站点列表。
这些Site对象保存是与该站点关联的Organization对象的实例(因为组织可能有许多站点..)
编辑:一个人只会属于列表中的一个组织。 (谢谢@jonskeet)
如何使用Linq(或Lamba)按字母顺序按组织顺序显示人员列表,然后按联系人的姓氏姓氏排序...... ??
答案 0 :(得分:3)
令我感到震惊的是你的模型有点混乱,但如果你确定:
你可以使用:
var sorted = people.OrderBy(p => p.Sites.First().Organization)
.ThenBy(p => p.LastName)
.ThenBy(p => p.FirstName);
答案 1 :(得分:0)
people.SelectMany(p => p.Sites).OrderBy(s => s.Organisation.Name).ThenBy(s => s.Organisation.Contact.Surname).ThenBy(s => s.Organisation.Contact.FirstName);
答案 2 :(得分:0)
Linq支持order by子句。查看此MSDN链接
http://msdn.microsoft.com/en-us/library/bb383982.aspx
public class CityLookup
{ public string City { get; set; }
public string Country { get; set; }
}
List<CityLookup> citiesLkp =
new List<CityLookup>
{
new CityLookup{ City = "New Delhi", Country = "India" },
new CityLookup{ City = "Sydney", Country = "Australia" },
new CityLookup{ City = "Tokyo", Country = "Japan" },
new CityLookup{ City = "New York", Country = "USA" },
new CityLookup{ City = "Paris", Country = "France" },
new CityLookup{ City = "Barcelona", Country = "Spain" },
};
// Now sort the names based on city name
var myList = from c in citiesLkp orderby c.City select c;
foreach (var record in myList )
{
Console.WriteLine(record.City);
}