vonec
vonec

Reputation: 701

Using Ormlite to Group query conditions

I'm trying to generate the SQL query which looks something like this:

SELECT * FROM Contact Where UserId = @UserId AND (FirstName = 'John' OR Surname = 'Smith')

This is what I can do:

Db.From<Contact>().Where(c => c.UserId == userId)
.And("(FirstName = {0} OR Surname = {1})"), firstName, surname);

Considering also that the Surname condition is optional, which means with a raw string we can build the string. Is there a way to not have to use a raw sql string?

Possible solution:

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);
}

Does anyone know of a better solution?

Upvotes: 1

Views: 176

Answers (1)

labilbe
labilbe

Reputation: 3584

var ev = Db.From<Contact>().Where(c => c.UserId == userId);
if (someCase)
    ev.And(c => c.FirstName == firstName || c.Surname == surname);

or if no someCase

var ev = Db.From<Contact>().Where(c => c.UserId == userId && (c.FirstName == firstName || c.Surname == surname));

Upvotes: 1

Related Questions