나는 여분의 코드 라인을 작성함으로써 통상적으로 할 수있는 일을 시도하고있다. 나는 내 질문에 답하는이 웹 사이트에서 거의 샘플을 보지 못했지만 여전히 달성하려고 노력하는 모든 것을 해결할 수는 없습니다. 내 데이터베이스에서 데이터를 가져 오지하기 위해 SQL에 Linq를 사용하고Dynamicallly Building Linq "where"clause
list<t> searchTerms;
class t
{
string columnName;
string columnValue ;
string columnType ;
string FilterType;
}
및 목록과 함께 "여기서"절을 구축하고 싶습니다 : 여기
는 내가 뭘하려고 오전의 의사 코드그래서 뭔가 같은 :
: 내가하고 싶은 것이SearchTerm t = terms.Find(term => term.ColumnValue == "PartNo");
if (t != null)
{
switch (t.FilterType)
{
case FilterType.Contains:
q = q.Where(c => c.PartNo.Contains(t.Value));
break;
case FilterType.EqualTo:
q = q.Where(c => c.PartNo.Equals(t.Value));
break;
case FilterType.StartsWith:
q = q.Where(c => c.PartNo.StartsWith(t.Value));
break;
}
}
t = terms.Find(term => term.ColumnValue == "ItemDesc");
if (t != null)
{
switch (t.FilterType)
{
case FilterType.Contains:
q = q.Where(c => c.ItemDesc.Contains(t.Value));
break;
case FilterType.EqualTo:
q = q.Where(c => c.ItemDesc.Equals(t.Value));
break;
case FilterType.StartsWith:
q = q.Where(c => c.ItemDesc.StartsWith(t.Value));
break;
}
}
은 뭔가를 달성하기 위해 사용 람다 표현식/반영 searchTerms.ToLamdaExpression은()
이> 여기서 절 즉 표현의 입력 저를 반환해야
q.whereJoinExpression(searchTerms.ToLamdaExpression());
. 나는이 질문을 게시하기 전에 연구 며칠을 투자하고 올바른 방향으로 도움을 주셔서 감사합니다 것
q = q.Where(searchTerms.ToLamdaExpression());
로 및 은 whereJoinExpression 나에게 같은 결과를 얻을 수 있습니다.
미래에 where 절에서 "and"대신 "and"를 사용하려는 경우 http://www.albahari.com/nutshell/predicatebuilder.aspx를 참조하십시오. –
나에게 많은 도움이되지 않았다. ( – user424244