我有一个丰富的NHibernate dbo对象,我需要查询该对象以提取关键字和相关的国家/地区代码数组。
解释: 我有3个从数据库返回的相关DBO对象,它们具有以下结构:
class DboCountry{
public int CountryId {get;set;}
public string CountryCode {get;set;}
}
class DboPage{
public int Id {get;set;}
public string Keyword {get;set;}
}
class DboPageCountry{
public int Id {get;set;}
public DboThemePage DboThemePage {get;set;}
public DboCountry DboCountry {get;set;}
}
在查询数据库时,我得到一个DboPageCountries列表,其中包含多个与各种DboCountry.CountryCode相关联的重复DboPage.Keyword
我需要做的是获取DboPageCountries列表并创建一个DtoKeywordCountryCode数组,其结构如下:
class DtoKeywordCountryCode{
public string Keyword {get; set;}
public string[] CountryCodes {get; set;}
}
到目前为止,使用Linq,我已经能够对关键字进行分组,但无法获取相关的国家/地区代码,或获取关键字和国家/地区代码,但未作为针对一系列适用CountryCodes的唯一关键字关联
任何正确方向的指针都非常赞赏。
答案 0 :(得分:1)
试试这个 -
var items = new List<DboPageCountry>(); //list of DboPageCountries
var items2 = from x in items.GroupBy(x => x.DboThemePage)
select new DtoKeywordCountryCode { Keyword = x.First().DboThemePage.Keyword, CountryCodes = x.Select(c => c.DboCountry.CountryCode).ToArray() };
答案 1 :(得分:0)
DtoThemePage[] dtoThemePageArrayFull = (from tpc in dboThemePageCountryList group tpc by tpc.DboThemePage.Keyword into k
select new DtoThemePage
{
Keyword = k.Key,
CountryCodes = k.Select(c => c.DboCountry.CountryCode).ToArray<string>()
}).ToArray<DtoThemePage>();