[英]using AND and OR
試圖獲取同時具有AND
和OR
的查詢以在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.