簡體   English   中英

RavenDB - 可選的where子句

[英]RavenDB - Optional where clause

我想編寫一個RavenDB查詢,如果它可用,則按值過濾,但如果該值不可用,我希望它返回所有對象。 例如,在linq到對象中,我可以這樣做:

var matches = people.Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();

但以下方法不起作用:

var matches = RavenSession.Query<Person>().Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();

因為userEntry不是索引值,所以會引發異常。

我怎么能做到這一點?

根據您對多個可選謂詞的評論,您應該可以執行以下操作:

var where = new List<Expression<Func<Person, bool>>>();

if (!string.IsNullOrWhitespace(lastName))
    where.Add(p => p.LastName == lastName);

if (!string.IsNullOrWhitespace(firstName))
    where.Add(p => p.FirstName == firstName);

// etc...

var query = session.Query<Person>();

foreach (var clause in where)
    query = query.Where(clause);

var results = query.ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM