使用 Ormlite 对查询条件进行分组
Using Ormlite to Group query conditions
我正在尝试生成如下所示的 SQL 查询:
SELECT * FROM Contact Where UserId = @UserId AND (FirstName = 'John' OR Surname = 'Smith')
这是我能做的:
Db.From<Contact>().Where(c => c.UserId == userId)
.And("(FirstName = {0} OR Surname = {1})"), firstName, surname);
还考虑到姓氏条件是可选的,这意味着我们可以使用原始字符串构建字符串。有没有办法不必使用原始 sql 字符串?
可能的解决方案:
var q = Db.From<Contact>().Where(c => c.UserId == userId);
if (onlyFirstName) {
q.And(c => c.FirstName == firstName);
} else if (onlySurname) {
q.And(c => c.Surname == surname);
} else {
q.And(c => c.FirstName == firstName || c.Surname = surname);
}
有人知道更好的解决方案吗?
var ev = Db.From<Contact>().Where(c => c.UserId == userId);
if (someCase)
ev.And(c => c.FirstName == firstName || c.Surname == surname);
或者如果没有 someCase
var ev = Db.From<Contact>().Where(c => c.UserId == userId && (c.FirstName == firstName || c.Surname == surname));
我正在尝试生成如下所示的 SQL 查询:
SELECT * FROM Contact Where UserId = @UserId AND (FirstName = 'John' OR Surname = 'Smith')
这是我能做的:
Db.From<Contact>().Where(c => c.UserId == userId)
.And("(FirstName = {0} OR Surname = {1})"), firstName, surname);
还考虑到姓氏条件是可选的,这意味着我们可以使用原始字符串构建字符串。有没有办法不必使用原始 sql 字符串?
可能的解决方案:
var q = Db.From<Contact>().Where(c => c.UserId == userId);
if (onlyFirstName) {
q.And(c => c.FirstName == firstName);
} else if (onlySurname) {
q.And(c => c.Surname == surname);
} else {
q.And(c => c.FirstName == firstName || c.Surname = surname);
}
有人知道更好的解决方案吗?
var ev = Db.From<Contact>().Where(c => c.UserId == userId);
if (someCase)
ev.And(c => c.FirstName == firstName || c.Surname == surname);
或者如果没有 someCase
var ev = Db.From<Contact>().Where(c => c.UserId == userId && (c.FirstName == firstName || c.Surname == surname));