2017-12-20 20 views
0

작동하지 않습니다.동적 Linq에 자리가 나는 다음과 같은 쿼리를 가지고 제대로

예를 들어, searchedColumnName == "MY_COLUMN"searchedValue == "8"으로 지정하십시오. 나는 동적으로 LINQ 방법으로 디버깅 할 때, 결과 LambdaExpression 식입니다 :

{Param_0 => ((Convert("MY_COLUMN") != null) AndAlso "MY_COLUMN".ToString().Contains("8"))} 

지금, 나는이 같은 자리 표시자를 사용하지 않는 경우 :

query.Where(searchedColumnName + " != null && " + 
      searchedColumnName + ".ToString().Contains(\"" + searchedValue +"\")"); 

LambdaExpression입니다 :

{Param_0 => ((Param_0.MY_COLUMN != null) AndAlso Param_0.MY_COLUMN.ToString().Contains("8"))} 

그리고 작동합니다.

내가 자리 표시자를 잘못 사용했다는 의미겠습니까?

답변

1

예, 자리 표시자를 쓰는 방법에 문제가 있습니다.

열 이름이 "MY_COLUMN"이면 이 아니고 열이 인 것으로 간주됩니다.

그래서 여기서는 열 이름에 자리 표시자를 사용할 수 없다고 생각합니다. 아래 코드를 사용할 수 있습니다 :

.Where (searchedColumnName + "= 0 0", searchedValue);

C# 6의 경우 .Where ($ "{searchedColumnName} = @ 0", searchedValue);

이 링크를 참조하십시오. 그것은 아주 잘 동적 INQ 필터를 설명 :

https://q-a-assistant.info/computer-internet-technology/dynamic-linq-filter-never-retrieves-correct-results-uwp-xaml/676258

+0

Linq에 컬럼 이름에 대한 자리 표시자를 사용하는 것을 허용하지 않습니다 그래서 동적? – HeyJude