나는 이것이 "UNION"시나리오에 해당한다고 확신하지만 실제로 문제를 해결하기위한 최선의 방법을 찾고 있습니다 (UNION이 아닐지라도).).LINQ - 두 쿼리를 병합하고 첫 번째 쿼리에서 항목 제외
var query = context.AffiliateConfigurations.Where(x => x.AffiliateId == affiliateId).Select(config => new ViewModels.ConfigurationItem
{
ConfigurationId = config.AffiliateConfigurationId,
ConfigKey = config.ConfigKey,
ConfigValue = config.ConfigValue,
UpdatedDate = config.UpdatedDate,
ConfigurationType = ViewModels.ConfigurationType.Affiliate
});
내가하고 싶은 것은 그 쿼리에 몇 가지 더 많은 결과를 추가 할 수 있습니다 :
나는 다음과 같다 쿼리가 있습니다. SiteConfiguration이라는 다른 테이블에 동일한 스키마가 있지만 ConfigKey가 원래 쿼리에없는 테이블의 행만 추가하려고합니다. LINQ 연합 (EU) 연산자는 당신이 원하는 무엇
var items = context.AffiliateConfigurations.Where(x => x.AffiliateId == affiliateId).Select(config => new ViewModels.ConfigurationItem
{
ConfigurationId = config.AffiliateConfigurationId,
ConfigKey = config.ConfigKey,
ConfigValue = config.ConfigValue,
UpdatedDate = config.UpdatedDate,
ConfigurationType = ViewModels.ConfigurationType.Affiliate
}).ToList();
var query = context.SiteConfigurations.Select(config => new ViewModels.ConfigurationItem
{
ConfigurationId = config.SiteConfigurationId,
ConfigKey = config.ConfigKey,
ConfigValue = config.ConfigValue,
UpdatedDate = config.UpdatedDate
});
foreach (var item in query)
{
if (items.All(x => x.ConfigKey != item.ConfigKey))
{
items.Add(item);
}
}
Except()를 사용해 보셨습니까? http://msdn.microsoft.com/en-us/library/system.linq.enumerable.except.aspx – Hardrada