는 다음과 같은 예를 생각해가 출력으로 "테스트", "t"를 생산하는 I 희망 것Linq Union의 문제는 무엇입니까?
public IEnumerable<String> Test()
{
IEnumerable<String> lexicalStrings = new List<String> { "test", "t" };
IEnumerable<String> allLexicals = new List<String> { "test", "Test", "T", "t" };
IEnumerable<String> lexicals = new List<String>();
foreach (String s in lexicalStrings)
lexicals = lexicals.Union (allLexicals.Where (lexical => lexical == s));
return lexicals;
}
을하지만, (출력은 "t"입니다)하지 않습니다. 확실하지는 않지만 지연 처리를해야 할 수도 있습니다. 어떤 아이디어를 어떻게 작동 시키거나 좋은 대안으로 삼을 수 있습니까?
편집 : 이것은 단순한 예입니다. lexicalStrings
및 allLexicals
은 원본 코드에서 다른 유형입니다. 그래서 저는 이것을 직접 결합 할 수는 없습니다.
Edit2가 더 같은 외모를 해결하는 문제 :
public IEnumerable<Lexical> Test()
{
IEnumerable<String> lexicalStrings = new List<String> { "test", "t" };
IEnumerable<Lexical> allLexicals = new List<Lexical> { ... };
IEnumerable<Lexical> lexicals = new List<Lexical>();
foreach (String s in lexicalStrings)
lexicals = lexicals.Union (allLexicals.Where (lexical => lexical.Text == s));
return lexicals;
}
설명과 쉬운 고마워! 위로 대답했다. – Foxfire
AddRange를 사용하려고 생각했지만 목록에서 중복이 발생합니다 (어떤 Union이 자동으로 피해야하는지). – Foxfire
@Foxfire 당신은 실제로 intersect를 사용해야합니다. 문제를 해결합니다. – Andrey