C# 如何将 SQL 查询转换为 Lambda 表达式

问题描述 投票:0回答:2

我有班级列表

public class V_Articles
{
    public string code{ get; set; }
    public string description { get; set; }
    public string shortDescription { get; set; }
}

我有一个字符串变量,可以包含此属性之一的名称和正确填充的列表

字符串字段名称=“描述”(或“代码”或“短描述”)

List list = Get_List( 填充列表 );

有没有办法制作通用的 lambda 表达式?

List list_2 = list.Where(k=> k.#fieldName的值# == '毛巾').ToList();

c# lambda expression
2个回答
0
投票

这应该有效。

List<V_Articles> list_2 = list.Where(k=> k.code == 'towel' || k.description == 'towel' || k.shortDescription == 'towel').ToList();

0
投票

Sandeep Bhat 的答案 可能是出于性能原因的选择,但如果您愿意,您也可以使用反射来动态解决此问题:

var propName = "code";
var list_2 = list.Where(k => k.GetProperty<string>(propName) == "towel");

public static class Extensions {
    public static TProp? GetProperty<TProp>(this object obj, string prop) {
        var t = obj.GetType();
        var p = t.GetProperty(prop)
            ?? throw new MissingMemberException($"Property '{prop}' not found on type {t.FullName}.");
        var v = (TProp?)p.GetValue(obj);
        return v;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.