假设我允许用户过滤一些不一定在UI中显示的数据。 我不想包含一个没有过滤的表,查询非常庞大,并且每一点性能提升都非常受欢迎(我个人认为在这些极端情况下我会使用纯SQL,但最好是EF)。
所以基本上归结为以下几点:
var listOfFilterProperties = { "C" };
var q =
from x in context.X
where x.B = 'zzz'
select new DataObject {
prop1 = x.A,
prop2 = listofFilterProperties.Contains("C")
? x.B.C
: String.Empty
}
当然这个例子非常人为,但基本原理是相同的。
如果listOfFilterProperties不包含FirstName属性,一切都很好,花花公子,但只要它包含它,一切都在crapper下面。 所以我可以概括地说这不是要走的路。
知道我应该怎么做吗?