Я пытаюсь сделать что-то, что можно сделать обычным путем, написав дополнительные строки кода.Я видел несколько примеров на этом веб-сайте, которые касаются моего вопроса, но все же я не могу собрать все части вместе, чтобы решить, чего я пытаюсь достичь.
Вот псевдокод того, что я пытаюсь сделать:
list<t> searchTerms;
class t
{
string columnName;
string columnValue ;
string columnType ;
string FilterType;
}
Я использую Linq to SQL для извлечения данных из моей базы данных и хотел бы создать предложение "where" сlist:
что-то вроде:
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;
}
}
, что я хотел бы сделать, это использовать лямбда-выражения / отражения для достижения чего-то вроде:
q.whereJoinExpression(searchTerms.ToLamdaExpression());
где searchTerms.ToLamdaExpression ()
должен вернуть мне вход для предложения where, то есть Expression>.и гдеJoinExpression должен получить тот же результат, что и
q = q.Where(searchTerms.ToLamdaExpression());
Я потратил пару дней на исследования, прежде чем опубликовать этот вопрос, и был бы признателен за помощь в правильном направлении.