2015-09-04 51 views
0

Basicly我有類似這樣ElasticSearch鳥巢標誌C#

[Flags] 
public enum MyFlags 
{ 
    FirstFlag = 1, 
    SecondFlag = 2 
} 

public class MyClass 
{ 
    public int Id {get;set;} 
    public MyFlags MyFlagProperty { get; set; } 
} 

Client.Search<T, TResult>(c=>c.Query ???) 

我的問題一個標誌字段,這裏是我找不到任何方法來搜索只要求我FirstFlag條目。我接近這個錯誤嗎?我應該使用2個屬性嗎?

public class MyClass 
{ 
    public int Id {get;set;} 
    public bool MyFirstFlag { get; set; } 
    public bool MySecondFlag { get; set; } 
} 

Client.Search<T, TResult>(c => c.Query(d => d.Term("MyFirstFlag", true))); 

這裏最好的辦法是什麼?你會不會建議不要使用標誌,而只是去屬性?

回答

1

有幾種方法,你可以在這裏採取

  1. 使屬性一組枚舉值
  2. 使用自定義JsonConverter序列化與FlagsAttribute枚舉的收集和反序列化的集合,枚舉
  3. 有單獨的屬性,你建議

我個人選擇2號,因爲它可以讓你的工作與代碼中的枚舉一樣,但將該字段作爲Elasticsearch中的集合存儲並輕鬆查詢。