我正在使用以下课程
class Country
{
string CtryID {get; set;}
List<City> city {get; set;}
}
class City
{
string county {get; set;}
int sqkm {get; set;}
}
我想点这样的结果
以下是国家和城市的一些示例数据
国家
US
英国
加拿大
城市
CityC
CityF
CityA
CityB
CityG
CityD
CityE
我想按国家/地区和城市(假设某些城市属于相应的国家/地区)订购记录并按此打印
加拿大 CityA CityB CityE
UK CityG CityF
US CityC CityD
等等
答案 0 :(得分:1)
这取决于您使用的技术如何显示它。例如,您使用的是ASP.NET网站,Windows窗体还是控制台应用程序。您使用的是O / RM工具还是内存中的集合。以下是在控制台应用程序中使用LINQ的内存中对象的示例:
IEnumerable<Country> countries = GetCountries();
foreach (var country in countries.OrderBy(c => c.Name))
{
Console.Write(country.Name + " ");
foreach (var city in country.Cities.OrderBy(c => c.Name))
{
Console.Write(city.Name + " ");
}
Console.WriteLine();
}
请注意我为此更改了对象模型。 A给了Country
Name
个属性,给了City
Name
个属性,并将city
属性重命名为Cities
。
<小时/> 你也可以这样做:
var countriesNames =
from country in countries
order by country.Name
let cityNames = country.Cities.OrderBy(c => c.Name).ToArray()
select new
{
Name = country.Name
Cities = string.Join(" ", cityNames)
}
foreach (var country in countriesNames)
{
Console.WriteLine(country.Name + " " + country.Cities);
}
答案 1 :(得分:0)
我不喜欢你的班级结构,John Skeet在评论中说的是真的。你应该听他的。他有很高的声誉。 :)
至少你应该改为:
class Country
{
string CtryID {get; set;}
List<City> cities {get; set;}
}
class City
{
string CityID {get; set;}
int sqkm {get; set;}
}
按照您在评论中所说的填充(但有时将其更改为数据库或xml文件):
List<Country> countries = new List<Country> { new Country() { CtryID = "US", cities = new List<City> { new City() { CityID ="CityF", sqkm = 2803 },...etc
然后,当您有一个填充的对象图时,请执行以下操作以获得输出:
countries.ForEach(ctry => {
Console.Write(ctry.Name + " ");
foreach (var city in ctry.cities)
{
Console.Write(city.Name + " ");
}
Console.WriteLine("");
});