在 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) 來獲取屬性值,并將其與指定的屬性值進行比較。最后,我們將查詢結果打印出來。
請注意,使用反射來獲取屬性值可能會降低性能,因此應慎重使用。