2017-04-10 7 views
0

.Where(string)에 전달할 수있는 동적 linq 표현식 문자열 내부에 어떻게 배열을 정의 할 수 있습니까? 이미 { "val a", "val b", "val c" }을 시도했지만 작동하지 않습니다.동적 linq 표현식에 배열 정의

public class Person 
{ 
    String Name { get; set; } 
    int Age { get; set; } 
} 

가 지금은 완전히 동적으로 생성 된 동적 LINQ 표현 문자열을 사용하는 경우, 예를 들어를 IQueryable<Person>을 조회 할 : 여기

내가 무엇을 달성하고자하는의 예 Name은 미리 정의 된 값의 목록에 대해 쿼리됩니다. 작품에 따라, 그러나 값이 많이있을 때 복잡 :

myQueryablePersons.Where("{ \"John Doe\", \"Mr Smith\", \"CatWoman\" }.Contains(Name)"); 

이 일반 C# .NET을 사용하여 얻을 수있는 방법을 내가 알고 내가하고 싶은 무엇

myQueryablePersons.Where("Name == \"John Doe\" || Name == \"Mr Smith\" || Name == \"CatWoman\"); 

이 같은 뭔가가 또는 일반 Linq,하지만 난 Where()에 전달 된 문자열을 사용하여 그것을하고 싶습니다. 이것이 가능합니까? Stackoverflow 및 다른 사이트에서 이미 다른 답변을 검색했지만 내 특정 질문에 맞는 답변을 찾을 수 없습니다.

+1

귀하가 원하는 것을 정확하게 강조하기 위해 구체적인 문제를 명확히하거나 추가하십시오. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. How to Ask 페이지에서이 질문에 대한 설명을 참조하십시오. –

+2

코드를 공유하고 문제를 지정하십시오. "이것은 입력입니다, 이것은 출력이지만 예상되는 출력은 여기에 있습니다"와 같은 예를 들자. – Berkay

+1

그리고 정확히 * 어떤 동적 인 linq를 사용하고 있는지 말해주십시오. (두 가지 또는 세 가지 다른 구현이 있습니다) – xanatos

답변

0

동적 인 linq가 "인라인"배열 생성을 지원한다고 생각하지 않습니다. 귀하가 할 수있는 일은 다음과 같이 인수로 전달하는 것입니다 :

var persons = new[] 
{ 
    new Person { Name = "John Doe" } 
}; 

var names = new[] { "John Doe", "Mr Smith" }; 
var res = persons.AsQueryable().Where("@0.Contains(Name)", names).ToArray(); 
+0

감사합니다.하지만 유감스럽게도 쿼리가 완전히 동적이어야하기 때문에 유스 케이스에서는 할 수없는 일입니다. .. – Slayer

+0

@Slayer 어떤 행운이? –