嘿,我要通过2个表格中的许多不同列来制作一个简单的搜索机。

我试图使它动态化。

我读到这个:

Is there a pattern using Linq to dynamically create a filter?

确实可以为我解决这个问题。它仅在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(英文,名),Efternavn(姓),Studienummer(研究编号)之类的列。
我想要的是一种“动态”方法,该方法可以设置要在哪一列中搜索以及在set列中需要搜索的值。

最佳答案

什么时候您的表达式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。这样,查询的未使用部分将在编译时进行优化。

关于c# - C#中的动态LINQ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4379240/

10-13 02:11