所以我有一个EF代码优先模型,其属性:Id和Prefix(都映射到数据库)和FullId(未映射)定义为
FullId => Prefix + "-" + Id.ToString("D4")
在C#模型中。示例FullId是
ABC-0045或XER-0001
现在我需要对此进行过滤 数据库中的FullId字段,即
db.Entity.Where(x=>x.FullId.Contains(search))
但搜索不只是ID,而是模型中的任何内容(其他列被省略,如:名称,地址等)。 where谓词是动态构建的。
到目前为止,为了解决这个问题,我考虑过:
你认为这是最好的方法吗?
答案 0 :(得分:0)
您没有指定search
的外观,因此我假设您正在搜索与您的完整ID模式匹配的特定完整ID值,例如ABC-0045
。
因此,一个好的解决方案是分割您要搜索的完整ID并单独过滤列。
var prefix = search.Split('-')[0];
var id = search.Split('-')[1];
db.Entity.Where(x => x.Id == id && x.Prefix.Equals(prefix));