簡體   English   中英

C#中的動態LINQ

[英]Dynamic LINQ in c#

嘿,我要通過2個表格中的許多不同列來制作一個簡單的搜索機。

我試圖使它動態化。

我讀到這個:

是否存在使用Linq動態創建過濾器的模式?

確實可以為我解決這個問題..只是在VB中,而我在C#中需要它

這是我的代碼:

private void displayWith1Criteria(string column, string value)
{
    Console.WriteLine("entering _1_ display method");
    dbcontent = new DBtestEntities();
    var studienummerQuery = from members in dbcontent.Medlemmer.Include("Retninger")
                            where column == value
                            orderby members.Fornavn
                            select new { Studienr = members.Studienummer, Fornavn = members.Fornavn, Efternavn = members.Efternavn, Email = members.Email, Studiested = members.Studiested, Betaling = members.BetalingsType, Uddannelses_Retning = members.Retninger.retningNavn };

    dataGridView1.DataSource = studienummerQuery;
}

完全不返回任何數據...

用members.Fornavn調用列(Fornavn-列名)

值= Anders(Fornavn列中的數據之一)

我想做什么:我使用ABO實體類中的.edmx文件將數據庫加載到dbcontent中。 我的數據庫包含2個表,“ Retninger”和“ Medlemmer”。 Medlemmer包含諸如Fornavn(英文,Firstname),Efternavn(Lastname),Studienummer(研究編號)之類的列。在設置列中搜索。

我認為,肖恩·米勒(Shawn Miller)對您鏈接的問題的答案更多是您想要的:

http://www.albahari.com/nutshell/predicatebuilder.html

您的表達式column == value何時可能返回true? 僅當string.Equals("Fornavn", "Anders")為true時。

進行動態linq很難。 通常是這樣做的:

...
where (!useMycolumn1 || member.mycolumn1 == value1) 
    &&(!useMycolumn2 || member.mycolumn2 == value2) 
    &&(!useMycolumn3 || member.mycolumn3 == value3) 
...

useMycolumn *是一個局部布爾變量,根據是否應該測試特定條件,將其設置為true或false。 這樣,查詢的未使用部分將在編譯時進行優化。

您是否打算在網格上調用DataBind()方法? 您怎么知道什么也沒有退還?

我認為這是因為對LINQ查詢的惰性評估。 您可以嘗試使用.ToList,如下所示:

dataGridView1.DataSource = studienummerQuery.ToList();

.DataBind()(如果與您的對象相關)。

編輯:

惰性評估:此鏈接 ,將是一個好的開始

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM