2013-04-17 8 views
0

이 코드가 : 내가 필요개체를 문자열 배열로 캐스팅 하시겠습니까?

Strutture = from Ricettivito s in Strutture 
      where s.ServiziAttivi.Cast<string>().Intersect(IDSServizi).Count() == IDSServizi.Count() 
      select s; 

을에 :

  1. 캐스트 (필수가 MyService.UniqueID를 포함) 문자열의 목록
  2. 로 (이면 MyService의 목록입니다) ServiziAttivi 이 목록에 IDSServizi의 각 요소 (문자열 목록)가 포함되어 있는지 확인하십시오.

하지만 변환 할 수없는 것 같습니까?

+0

변환을 수행 할 수없는 이유는 무엇입니까? 오류 메시지의 의미는 무엇입니까? –

+0

' 'Ricettivita.MyService'유형의 객체를 'System.String'을 입력하여 전송할 수 없습니다. ' – markzzz

+0

IDSServizi 내부의 각 값이 포함 된'ServiziAttivi'를 추출해야합니다. – markzzz

답변

4

먼저 캐스팅 한 후 문자열 속성을 선택합니다.

where s.ServiziAttivi 
      .Cast<Ricettivita.MyService>() 
      .Select(x=>x.UniqueID).Intersect(IDSServizi).Count() 
+0

OP가 .ToList()를 수행했다면 먼저 캐스트가 필요합니까? OPs 커 스톰 컬렉션 클래스가 어떤 식 으로든 Enumerable에서 상속 받았다고 가정합니다. –

+0

잘 작동하는 것 같습니다. – markzzz

1

난 당신이 Cast 대신 Select를 사용한다고 생각 : .Cast<Ricettivita.MyService>()

Strutture = from Ricettivito s in Strutture 
      where s.ServiziAttivi.Select(x => (string)x.UniqueID).Intersect(IDSServizi).Count() == IDSServizi.Count() 
      select s; 
+0

나는 할 수 없다. @Michael Perrenoud에 대한 답을 확인하십시오 – markzzz

관련 문제