我们可以动态地在linq查询上的条件中放置吗?
例如:
class Result
{
string v1;
string v2;
string v3;
}
List<Result> result = (from r in results select r);
//i want to do something like the following....
if(conditionA)
{
result = result appened (or v1 = xxx)
}
else if(conditionB)
{
result = result appened (or v2 = xxx)
}
else if(conditionC)
{
result = result appened (or v3 == xxx)
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何处理Linq的情况????
钍
对于and子句的关系,您可以轻松地附加.Where()过滤方法,如下所示:
where conditionOriginal(r) and conditionDynamic(r)
Run Code Online (Sandbox Code Playgroud)
作为
var results = (from r in originalResults
where originalConditions(r)
select r);
...
if (conditionA)
results = results.Where(r => conditionDynamic(r));
Run Code Online (Sandbox Code Playgroud)
但是,要附加“或”类型关系,您必须与原始结果集联合,如下所示:
where conditionOriginal(r) or conditionDynamic(r)
Run Code Online (Sandbox Code Playgroud)
变成
var results = (from r in originalResults
where conditionOriginal(r)
select r);
...
if (conditionB)
results = results.Union((from r in originalResults
where conditionDynamic(r)
select r));
Run Code Online (Sandbox Code Playgroud)
或者
if (conditionB)
results = results.Union(originalResults.Where(conditionDynamic(r)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |