LINQ 표현식 본문 ToString

dapper lambda linq regex string

문제

누군가 내게 검색의 단점을 설명 할 수 있는지 궁금하네요.

(Expression<Func<T, bool>>) Expression.Body

런타임에 이것을 문자열로 조작 할 수 있습니까?

예를 들면 다음과 같습니다.

public partial class Tests : Form
{
    public Tests()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        TestClass t = new TestClass();
        textBox1.Text = t.Evaluate(templates => templates.usable == true && templates.name == "tc1");
    }       
}

public class TestClass
{
    public string name { get; set; }
    public bool usable { get; set; }
}

public static class Helpers
{
    public static string Evaluate<T>(this T input,Expression<Func<T, bool>> Expression) where T : class
    {

        return Expression.Parameters.Single().Name + " " + Expression.Body;

    }
}

돌아 오는

templates ((templates.usable == True) AndAlso (templates.name == "tc1"))

어떤 종류의 성능 문제가이 검색 및 Regex 식을 통해 구문 분석 발생할 수 있습니다 궁금하네요.

왜 그 질문에 대한 대답으로? 나는 Dapper로 조금 놀았지만 기존의 확장 기능 중 (내가 본) 확장 기능 중 어느 것도 나에게 호소력이 없다.

나는 EF와 비슷한 방식으로 그것을 작동시킬 수 있기를 원한다.

_repo.Select(templates=>templates.usable== true && templates.id == templateId);

인기 답변

텍스트를 파싱하는 대신 실제 표현을 사용하는 것에 대해 감사드립니다. 관심있는 사람이라면 sqlexpression 프로젝트의 첫 번째 초안에 대한 링크를 게시했습니다. Google 코드 - SqlExpression.cs

생성되는 매개 변수는 Dapper의 DynamicParameters이지만 표준 SQL 매개 변수로 쉽게 스왑 될 수 있습니다.

아직 많은 테스트를 수행하지는 않았지만이 단계에서는 쿼리가 합리적으로 잘 수행되는 것으로 보입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.