如何在 LINQ 查询中使用 PropertyName

1949idc 2年前 (2024-09-18) 阅读数 338 #深度学习

在 LINQ 查询中使用 PropertyName,可以通过使用反射来动态获取属性名称,然后在查询中使用该属性名称。以下是一个示例:

假设有一个名为 Person 的类,其中有一个属性为 Name:

public class Person
{
    public string Name { get; set; }
}

现在假设有一个 List<Person> 类型的集合,我们想要查询这个集合中所有 Name 属性为 “John” 的对象。可以通过以下方式使用 PropertyName:

List<Person> persons = new List<Person>
{
    new Person { Name = "John" },
    new Person { Name = "Mary" },
    new Person { Name = "John" }
};

string propertyName = "Name";
string propertyValue = "John";

var results = persons.Where(p => p.GetType().GetProperty(propertyName).GetValue(p).ToString() == propertyValue);

foreach (var person in results)
{
    Console.WriteLine(person.Name);
}

在上面的示例中,我们首先定义了要查询的属性名称和属性值。然后在 LINQ 查询中使用 GetType().GetProperty(propertyName).GetValue(p) 来获取属性值,并将其与指定的属性值进行比较。最后,我们将查询结果打印出来。

请注意,使用反射来获取属性值可能会降低性能,因此应慎重使用。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业