我有一个看起来像这样的课程:
public class KpiValue
{
public string ID { get; set; }
public string NAME { get; set; }
public string ORG_UNIT_ID { get; set; }
public string SITE_ID { get; set; }
public string AREA_ID { get; set; }
public double? VALUE { get; set; }
}
相应的Site
,Area
,Organization
和OrgUnit
类,每个都有ID属性。只有一个属性具有值,其余属性为null(不是我的想法)。
我想将这个结构规范化为有用的东西,分配一个看起来像的NAME属性:
“区域:我的第一区”或 “网站:有史以来最好的网站”
包含与我的班级的相应ID属性(AREA_ID或SITE_ID或......)匹配的网站或区域或组织的名称等。
假设到目前为止我已经得到了这个......
var org = Organization.FindByProperty("NAME",orgName);
var orgUnits = org.GetOrgUnits().AsEnumerable();
var sites = from OrgUnit ou in orgUnits
from Site s in ou.GetSites()
select s;
var areas = from Site s in sites
from area in s.Areas()
select area;
//help!
var monthlyGrid = from KpiValue monthlyKpi in kpiMonthlyValues
join area in areas on monthlyKpi.AREA_ID equals area.ID
join site in sites on monthlyKpi.SITE_ID equals site.ID
join orgUnit in orgUnits on monthlyKpi.ORG_UNIT_ID equals orgUnit.ID
select new monthlyKpi()
{
NAME = //"Area: MyArea" or "Site: MySite"
...
};
连接似乎与AND条件匹配,而不是OR条件......如何在LINQ中实现此目的?