LINQ中的动态查询 - c#

我在Web表单中有四个按钮,它们的目的分别是加载第一条,上一条,下一条和最后一条记录。
他们通过获取表单中加载的当前ID并根据需要执行操作。我正在使用Linq to SQL。
下面是我用于NEXT记录的代码,如果我想通过ID加载下一条记录,则该函数运行良好。

var dx = new DataModelDataContext();
List<Dog> dogList = dx.Dogs.AsEnumerable().ToList();

try
{
    return
        dogList.SkipWhile(x => x.Id != dogId).Skip(1).FirstOrDefault().Id.ToString(
            CultureInfo.InvariantCulture);
}
catch
{
    return null;
}

我重复一下,对于以前的场景,此代码可以正常工作。

场景发生了变化,现在我必须根据前面所述使用前面提到的按钮来检索记录。
一个包含以下形式的属性的下拉列表:(FirstName,LastName,Gender等...)因此,它不再是旨在查找的函数
通过ID的下一条记录。

我正在考虑创建一个LoadNextRecord(searchParameter,TextboxValue)以便根据该属性定位下一条记录
从下拉列表中指定。

但是,是否可以动态指定要与我的数据进行比较的属性?

示例:x => x。[searchParameter]!= textboxvalue

我知道使用动态SQL是可行的...但是我想知道是否可以使用LINQ。

参考方案

您可以使用反射

        var dx = new DataModelDataContext();
        List<Dog> dogList = dx.Dogs.AsEnumerable().ToList();

        string PropetyToCheck = "MyProperty";

        PropertyInfo property = typeof(Dog).GetProperty(PropetyToCheck);

        try
        {
            return
                dogList.SkipWhile(x => property.GetValue(x, null) != dogId).Skip(1).FirstOrDefault().Id.ToString(
                    CultureInfo.InvariantCulture);
        }

SQL Joins与Java代码? - java

我有这样的查询Select Folder.name from FROM FolderTable,ValidFolder, ValidFolderGroup, ValidUser, ValidLocation, ValidDepartment where ValidUser.LocationCode *= ValidLocation.LocationCode …

如何处理LINQ to Entities仅支持无参数的构造函数和初始化程序[重复] - c#

This question already has answers here: Only parameterless constructors and initializers are supported in LINQ to Entities (14个回答) 4年前关闭。 因此,当我尝试从Web Api获取数据时会发生这种情况:ExceptionMessa…

剃刀付款集成->如何通过关闭按钮X检测剃刀付款模型是否关闭 - javascript

当用户关闭而无需付款时,我在CI框架中使用Razorpay,请创建razor支付模型,然后取消订单,我希望按状态更改为已取消的状态触发查询。所以我怎么能检测到这一点。我已经通过单击jQuery单击关闭功能但无法使用... javascript大神给出的解决方案 Razorpay提供了JS方法来检测模式关闭。您编写的任何JS代码都不会在结帐页面上运行,因为它是…

如何使用箭头符号(->)创建受保护的方法? - java

当我们编写以下代码时Stream.of(1,2,3,4,5).filter(i -> (i%2 == 0)).map( i -> i*i ); 表达式i -> (i%2 == 0)或i -> i*i将变为私有方法。在我的用例中,编写了一个junit测试,以确保没有方法是私有的(是的,这是强制性的),并且对于这些lambda表达式而言,…

Flask to Dygraph-如何传递数据? - javascript

如果我有一个简单的Python时间数据系列,例如:graphdata = [] graphdata.append( [(datetime.date(2008, 5, 7)),75]) graphdata.append([(datetime.date(2008, 5, 8)), 85]) graphdata.append([(datetime.date(200…