>source

Azure 테이블의 일부 속성만 읽는 일반 메서드를 만들려고 합니다. 이것을 만들려면 TableQuery를 사용하지만 일부는 필터 조건을 통과할 수 없습니다.

public  IEnumerable<T1> ExecuteQuery<T, T1>(Expression<Func<T,bool>> predicate)
        where T : TableEntity, IDomainData, new()
        where T1 : new()
    {
        Type typeParameterType= typeof(T);
        CloudTable tableReference= tableClient.GetTableReference(typeParameterType.Name);
        var query= new TableQuery<T>()
        {
           FilterString= predicate.Body.ToString(),
           SelectColumns= typeof(T1).GetListOfPropertyNames()
        };
        query= query.Where(predicate).AsTableQuery();==> Throws error Object reference error
        return tableReference.ExecuteQuery(query) as List<T1>;
        //return tableReference.ExecuteQuery<T, T1>(query,EntityAdapter.AdapterResolver<T1>);
    }

Filterstring을 TableQuery에 전달하고 하늘색 테이블 인스턴스로 TableQuery를 실행할 위치가 있습니까?

  • 답변 # 1

    필터 조건과 함께 테이블에서 속성의 하위 집합을 가져오려는 경우 다음과 같이 Select 및 Where 절을 사용하여 지정해야 합니다.

    TableQuery<T> query= new TableQuery<T>().Select(new List<string>() { "prop1", "prop2" }).Where("filter string");
    List<T> result= currentTable.ExecuteQuery(query).ToList();
    

    또한 스토리지 클라이언트 라이브러리에는 필터 문자열을 구성하는 데 사용할 수 있는 도우미 메서드가 있습니다. TableQuery.GenerateFilterCondition을 참조하세요.

    문자열 술어로 변환하는 대신 Expression>술어를 찾고 있었습니다.

    user1456102021-11-28 23:46:24

    TableQuerycarQuery= 새로운 TableQuery(). Select(new List{ "Make", "Model", "Year", "Vin" }).Where("Year gt 2010"); 참조: docs.microsoft.com/en-us/azure/…

    Abhi2021-11-29 02:53:36
  • 이전 JavaScript를 사용하여 TypeORM에서 Active Record 패턴을 사용하는 방법
  • 다음 c# : .NET Core의 Azure Table Storage CreateQuery