У меня есть класс, который выглядит следующим образом:
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.Только одно из свойств будет иметь значение, остальные будут нулевыми (не моя идея).
Я хотел бы преобразовать эту структуру в нечто полезное, назначив свойство NAME, которое выглядит следующим образом:
"Область: моя первая область" или "Сайт: лучший сайт когда-либо"
Состоит из ИМЯ сайта или области или организации и т. Д., Соответствующих соответствующему свойству идентификатора (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"
...
};
Соединение, похоже, соответствует условиям И, а не ИЛИ ... Какя могу добиться этого в LINQ?