Динамическая фильтрация Linq с родительским свойством не работает
У меня вопрос, связанный с динамическим Linq. У меня есть структура классов, определенная ниже.
public class UserProfile
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public long Overtime { get; set; }
public UserProfileDetails UserProfileDetails { get; set; }
}
public class UserProfileDetails
{
public UserProfileDetails()
{
LstString = new List<string>();
}
public string Department { get; set; }
public double Salary { get; set; }
public int LeaveBalance { get; set; }
public List<string> LstString { get; set; }
}
Создал объект UserProfile, как показано ниже.
var a = new UserProfile();
Для обычного Linq я могу выполнить следующее. Я пытаюсь найти все строки в UserProfileDetails, хотя мое имя не совпадает с моим.
var vvv = a.UserProfileDetails.LstString.Where(x => !x.Equals(a.FirstName)).ToList();
Я хочу преобразовать указанный выше linq в динамический linq и использовал следующие
var vDyna = a.UserProfileDetails.LstString.AsQueryable().Where("!Equals(FirstName)").ToList();
Но приведенное выше дает ошибку: System.Linq.Dynamic.Core.Exceptions.ParseException: «В типе« String »нет свойства или поля« FirstName ». Кто-нибудь может мне помочь с этим, пожалуйста?
1 ответ
Думаю, это похоже на функцию LINQ. В строке where вы должны использовать переменную UserProfile a. Ваш код:
var vDyna = a.UserProfileDetails.LstString.AsQueryable().Where("!Equals(FirstName)").ToList();
Мое предложение:
var vDyna = a.UserProfileDetails.LstString.AsQueryable().Where(s => !s.Equals(a.FirstName)).ToList();
Я никогда не использовал Dynamic Linq, но, возможно, это помогает.
Источник: https://docs.microsoft.com/en-us/dotnet/api/system.linq.queryable.where?view=net-5.0