2017-05-11 11 views
1

1.)LINQでDISTINCTクエリを実行することはできますか?以下のAQLクエリと同等ですか?ArangoDB .NETクライアント:クエリに関するさまざまな質問(DISTINCT、LET/DOCUMENT、生AQL)

2.) "LET doc = DOCUMENT(some._id)"は可能ですか?私は以下のようなクエリを試しましたが、Documentがサポートされていないという例外がありました。

from user in users 
    let dept = db.Document<Department>(user.department_id) 
    where dept.name == "lingerie" 
    select user 

3.)バインドパラメータを使用して生のAQLクエリをどのように作成しますか?私はCreateStatement()を試しましたが、パラメータ置換を行うことができませんでした( 'evts'はいくつかのドキュメントIDを持つIEnumerableです)。

List<ArangoDB.Client.Data.QueryParameter> parameters = new List<ArangoDB.Client.Data.QueryParameter>() { 
    new ArangoDB.Client.Data.QueryParameter() { 
     Name = "@P1", 
     Value = evts, 
    }, 
}; 

query = Database.CreateStatement<InspectionMethod>(@" 
    FOR cfg IN test_configuration 
     FOR method IN inspection_method 
      FILTER cfg.inspection_method_id == method._id AND cfg.test_event_id IN @P1 
      SORT method.name 
      RETURN DISTINCT method", parameters) 
      .AsEnumerable().AsQueryable(); 

デバッグ出力:

============================== 
5/11/2017 2:02:54 PM 
creating an AQL query: 
query: 
FOR cfg IN test_configuration 
    FOR method IN inspection_method 
     FILTER cfg.inspection_method_id == method._id AND cfg.test_event_id IN @P1 
     SORT method.name 
     RETURN DISTINCT method 
bindVars: 
name: @P1 value: ["test_event/7250917"] 

parsed query with variables replaced: 

FOR cfg IN test_configuration 
    FOR method IN inspection_method 
     FILTER cfg.inspection_method_id == method._id AND cfg.test_event_id IN @P1 
     SORT method.name 
     RETURN DISTINCT method 

答えて

0

私は#3を考え出しました。パラメータから@を削除する必要がありましたが、クエリに残しておく必要がありました(投稿する前に試したと思っていましたが、他の組み合わせであったと思います)。

List<ArangoDB.Client.Data.QueryParameter> parameters = new List<ArangoDB.Client.Data.QueryParameter>() { 
    new ArangoDB.Client.Data.QueryParameter() { 
     Name = "P1", 
     Value = evts, 
    }, 
}; 

query = Database.CreateStatement<InspectionMethod>(@" 
    FOR cfg IN test_configuration 
     FOR method IN inspection_method 
      FILTER cfg.inspection_method_id == method._id AND cfg.test_event_id IN @P1 
      SORT method.name 
      RETURN DISTINCT method", parameters) 
      .AsEnumerable().AsQueryable(); 
関連する問題