C# 如何创建从项目列表中筛选的lambda表达式?
我使用的是实体框架,拥有以下类: 有一个搜索函数,它根据一些条件查询数据库,这些条件收集在SearchJSON对象中:C# 如何创建从项目列表中筛选的lambda表达式?,c#,C#,我使用的是实体框架,拥有以下类: 有一个搜索函数,它根据一些条件查询数据库,这些条件收集在SearchJSON对象中: public class SearchJSON : ISearchObject { public List<String> sites { get; set; } public int minWage { get; set; } public int maxWage { get; set; }
public class SearchJSON : ISearchObject
{
public List<String> sites { get; set; }
public int minWage { get; set; }
public int maxWage { get; set; }
public List<String> countries { get; set; }
public int minRating { get; set; }
public int maxRating { get; set; }
}
公共类SearchJSON:ISearchObject
{
公共列表站点{get;set;}
公共整数{get;set;}
公共整数maxWage{get;set;}
公共列表国家{get;set;}
公共整数{get;set;}
public int maxRating{get;set;}
}
目前,我已经设法按HourWageMin和HourWageMax筛选结果,但我也想筛选国家和技能。这是我目前的疑问:
var query =
db.Freelancers.Where(x => x.HourWageMin >= data.minWage && x.HourWageMax <= data.maxWage).ToList();
var查询=
db.freegors.Where(x=>x.HourWageMin>=data.minWage&&x.HourWageMax您可以使用任意值,并包含:
var query = db.Freelancers.Where(
x => x.HourWageMin >= data.minWage &&
x.HourWageMax <= data.maxWage &&
x.skills.Any(s => data.countries.Contains(s.Name)) &&
x.countries.Any(c => data.skills.Contains(c.Name))
).ToList();
var query=db.freegors.Where(
x=>x.HourWageMin>=data.minWage&&
x、 HourWageMax数据.countries.Contains(s.Name))&&
x、 countries.Any(c=>data.skills.Contains(c.Name))
).ToList();
首先,您应该将自由职业者上的“国家导航”属性重命名为“国家”,以避免混淆,因为这是一种0或1对多关系。我认为自由职业者不能拥有一个以上的国家
根据国家/地区进行筛选很容易:
var query = db.Freelancers.Where(x => x.Country != null && x.Country.Name == "France");
根据自由职业者是否具有特定技能进行筛选:
var query = db.Freelancers.Where(x => x.Skills.Any(s => s.Name == "Artist"));
您还可以使用&&over和over将Where方法链接在一起,以提高可读性:
var query = db.Freelancers.Where(x => x.HourWageMin >= data.minWage)
.Where(x => x.HourWageMax <= data.maxWage)
.Where(x => x.Country != null && x.Country.Name == "France")
.Where(x => x.Skills.Any(s => s.Name == "Artist"));
var query=db.freegors.Where(x=>x.HourWageMin>=data.minWage)
.Where(x=>x.HourWageMax x.Country!=null&&x.Country.Name==“法国”)
其中(x=>x.Skills.Any(s=>s.Name==“艺术家”);