簡體   English   中英

使用AND和OR

[英]using AND and OR

試圖獲取同時具有ANDOR的查詢以在C#中工作。

在SQL Server中將類似於:

... where (Code = 'abc' OR Description = 'def') AND (Flag = 0)

有了MongoVUE,我似乎已經可以使用它:

{ "$or" : [{ "Description" : /def/i }, { "Code" : /abc/i }], "$and": [{ "Flag" : 0 }] }

但似乎無法用C#來獲得它:

List<IMongoQuery> qryValue = new List<IMongoQuery>();
qryValue.Add(Query.EQ("Code", "abc"));
qryValue.Add(Query.EQ("Description", "def"));
qryValue.Add(Query.And(Query.EQ("Flag", 1)));
var query = Query.Or(qryValue.ToArray());

但是得到這個:

{ "$or" : [{ "Code" : "abc" }, { "Description" : "def" }, { "Flag" : 1 }] }

這不會給出正確的結果:缺少AND部分。

有人可以幫忙嗎?

之所以能獲得回饋,是因為您要將所有Query.EQ放入Query.Or或最后一行。 將單個值傳遞給Query.And 就像您將單個值傳遞給任何其他方法一樣。 您還沒有添加任何東西。

您需要像上面在SQL中那樣用代碼編寫它: 尊重括號

首先將您的Or組合在一起,並將其作為第一個參數傳遞給And ,然后將其傳遞給Flag的單個附加子句。

var clauses = new[] { Query.EQ("Code", "abc"), Query.EQ("Description", "def") };
var query = Query.AND(Query.OR(clauses), Query.EQ("Flag", 1))

這樣的事情應該起作用。

暫無
暫無

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

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