문제

나는 내 엔티티에 존재하는 두 열을 속성으로 쿼리하는 LINQ 문과 엔티티의 데이터베이스에서 열로 존재하는 열을 쿼리하려고합니다.

예를 들어, 책 엔티티 모음이 있습니다. 각 책에는 ID 및 제목 속성과 데이터베이스에 일치하는 열이 있습니다. 그러나 책의 테이블에도 열 필드가 포함되어 있다고 가정 해 봅시다. 작가 그리고 내 책 엔티티에는 이것을 가지고 있지 않습니다.

ID와 제목과 관련된 일반 쿼리는 다음과 같습니다.

Books.Where(b=>b.ID == 123 && b.Title == "Title")

그러나 나는 또한 동등한 것을 동적으로 추가하고 싶습니다. 그리고 저자 = '이름' "위의 쿼리에도. 저자 속성은 책 객체에 존재하지 않습니다.

추가 필드와 포함 해야하는 값은 실제로 사전에서 사용할 수 있습니다. 따라서 여러 가지를 동적으로 추가해야합니다 그리고 [fieldName] = '[value]' 쿼리 조건.

Azure 테이블 스토리지를 사용하고 있다는 사실을 알기 위해 왜 이것이 필요한지 설명하는 데 도움이 될 수 있으며 서적 엔티티를 Azure에 저장된 XML로 바꾸는 직렬화를 무시했습니다.

편집하다 -

동적 LINQ 라이브러리를 사용해 보았지만 작동하지 않습니다.

Books.Where(b=>b.ID == 123 && b.Title == "Title").Where("Author = @0", "SomeName").ToList();

던지기 : System.linq.dynamic.parseexception : '책'유형에는 속성이나 필드가 존재하지 않습니다.

또한,

나는 사용한다는 것을 알고있다 books.addqueryoption ( "$ 필터", "author eq 'somename'")) 그 자체로 사용될 때 작동합니다. 그러나 나는 기존의 Where 진술과 함께 AddQueryOption을 사용하는 방법을 모른다.

도움이 되었습니까?

해결책 2

LINQ에서는 불가능합니다

다른 팁

예약 할 저자를 추가하지 않으면 저자와 함께 다른 객체를 전달해야합니다.

var x = new { Author="SomeName" };  
    Books.Where(b=>b.Id == 1 && b.Title == "Alpha").Where("@1.Author == @0", "SomeName", x);

또는 책에서 물려 받고이 목적을 위해 저자 속성을 추가하십시오.

public class BookEx : Book {
    public string Author { get; set; }
}

Books.Cast<BookEx>().Where(b=>b.Id == 1 && b.Title== "Alpha").Where("Author == @0", "SomeName");

다음 코드를 시도하십시오.

var result = _tofiObjectList.Where(o => o.GetType() == mainObjType)
    .AsQueryable().Cast(relation.MainObject.EntityType).Where(relation.MainObject.Filter);

이것은 확장 방법입니다 IQueryable 유형:

public static IQueryable Cast(this IQueryable source, string type)
{
    switch (type)
    {
        case "TofiDataCollection.Service.TofiEntity.Obj":
            return source.Cast<Obj>();
    }
    return source;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top