2015-05-14 3 views
0

Я не знаю, как это объяснить. Но я пытаюсь получить другие свойства, пока выполняется инструкция LINQ. пример:Получить еще один объект, пока LINQ выполняет

Это рабочий LINQ заявление:

if (customerData.Demographics.Count > 0) 
{ 
    string[] communities = {"ONLINE_TECH_COMM", "ONLINE_PROF_NET", "ONLINE_TECH_SECTIONS"}; 
    var results = (from CustomerDemographic customerDemographic in customerData.Demographics where (customerDemographic.UserD2==DateTime.MinValue) 
      select new Models.MemberOnlineCommunityPreferences() 
      { 
       DemographicCode = customerDemographic.DemographicCodeString, 
       DemographicSubCode = customerDemographic.DemographicSubcodeString, 
    }).Where(x=>communities.Contains(x.DemographicCode)).OrderBy(x=>x.DemographicCode).ToList(); 

Теперь мне нужно передать DemographicCodeString и DemographicSubcodeString значения

oApplicationSubcode = TIMSS.API.CachedApplicationData.ApplicationDataCache.get_ApplicationSubCode("CUS", "DEMOGRAPHIC", DemographicCodeString, DemographicSubcodeString); 

И проверить свойства WebEnabled =="Y" и Active=="Y", то только для чтения customerData и присвойте его результатам. Можно ли сделать это с помощью LINQ в одном заявлении?

+0

Если я правильно вас понял, '' WebEnabled' и Active' являются свойствами от 'oApplicationSubcode', и вы должны проверить, являются ли они' Y' для каждого 'MemberOnlineCommunityPreferences' объекта? Если это так, я полагаю, вы можете включить метод get_ApplicationSubCode из внутри предложения where и фильтровать прямо там? –

ответ

0

Что-то вроде этого (полностью непроверено)?

var results = (from CustomerDemographic customerDemographic in customerData.Demographics 
       where (customerDemographic.UserD2==DateTime.MinValue) 
        && communities.Contains(x.DemographicCodeString) 
       let applicationSubcode = TIMSS.API.CachedApplicationData.ApplicationDataCache.get_ApplicationSubCode("CUS", "DEMOGRAPHIC", customerDemographic.DemographicCodeString, customerDemographic.DemographicSubcodeString) 
       where applicationSubcode.WebEnabled == "Y" 
        && applicationSubcode.Active == "Y" 
       orderby customerDemographic.DemographicCodeString 
       select customerDemographic).ToList(); 
2

Необходимо использовать ключевое слово «let».

https://msdn.microsoft.com/en-us/library/bb383976.aspx

var results = from CustomerDemographic customerDemographic in customerData.Demographics 

let code = customerDemographic.DemographicCodeString 

let subcode = customerDemographic.DemographicSubcodeString 

where communities.Contains(code) && customerDemographic.UserD2==DateTime.MinValue 

let appSubCode = TIMSS.API.CachedApplicationData.ApplicationDataCache.get_ApplicationSubCode("CUS", "DEMOGRAPHIC", code, subcode) 

where appSubCode.WebEnabled =="Y" && appSubCode.Active=="Y" 

select new Models.MemberOnlineCommunityPreferences() 
     { 
      DemographicCode = code, 
      DemographicSubCode = subcode 
     }; 
Смежные вопросы