gpt4 book ai didi

c# - C# 中表中动态列的 LINQ

转载 作者:太空宇宙 更新时间:2023-11-03 21:05:34 26 4
gpt4 key购买 nike

我有一个包含多个车辆列的表格 enter image description here

我对应的SQL Query是

sQuery = "Select * from Vehicle where " + variant + "='Y'";

如何在 LINQ 中编写相同的查询?

最佳答案

您可以使用 System.Linq.Expression 命名空间动态构建 lambda 表达式,并将其传递给 Where 方法。

例如:

public IQueryable<Vehicle> GetAccounts(string variant)
{
// Build equivalent lambda to 'param => param.{variant} == "Y"'

// This is lambda parameter
var param = Expression.Parameter(typeof(Vehicle));

// This is lambda body (comparison)
var body = Expression.Equal(
// Access property {variant} of param
Expression.Property(param, typeof(Vehicle).GetProperty(variant)),
// Constant value "Y"
Expression.Constant("Y")
);

// Build lambda using param and body defined above
var lambda = Expression.Lambda<Func<Vehicle, bool>>(body, param);

// Use created lambda in query
return VehicleDatatable.Where(lambda);
}

另一个想法是稍微转换查询。您可以使用以下查询实现相同的工作:

sQuery = "Select * from Vehicle where (Tracks+Cars+Utility) LIKE '" + value + "'";

其中 value 是 'Y__' 或 'Y' 或 '__Y' 取决于您要查询的车辆类型。它绝对不是最有效的,但很容易转换为 linq。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com