繁体   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