我不知道 - 我可以在 IEnumerable 的 Where 部分传递特定参数吗?例如我有这样的查询:
IEnumerable<Bla> quer = quer.Where(e => e.actual == 1 && param);
哪里param
会是这样
e.Number > 5
我认为它可以通过IsNullOrEmpty
但也许使用泛型来完成?
我使用 EF,它是 Web Forms。
public class BLA
{
[Key]
public int IDin { get; set; }
public int actual { get; set; }
public string code { get; set; }
public DateTime Date { get; set; }
}
如果你定义param
为一个函数(Func<Bla, bool>
准确地说),你可以调用它:
Func<Bla, bool> param = bla => bla.Number > 5;
并称之为:
IEnumerable<Bla> quer = quer.Where(e => e.actual == 1 && (param?.Invoke(e) ?? true));
将?? true
允许您在默认情况下,结果param
是null
。现在它会返回true
if param
is null
,但如果你愿意,你可以改变它。
由于您正在运行 EF,因此您不能以上述方式使用它。
您可以使用一个Expression<Func<Bla, bool>>
. EF 可以将表达式转换为实际的 SQL:
Expression<Func<Bla, bool>> param = bla => bla.Number > 5;
IEnumerable<Bla> quer = quer.Where(e => e.actual == 1)
.Where(param);
对于更复杂的功能,您必须首先实现结果:
IEnumerable<Bla> quer = quer.Where(e => e.actual == 1)
.ToList() // materialize
.Where(e => param?.Invoke(e) ?? true);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句