将表达式联接到linq查询
本文关键字:linq 查询 表达式 | 更新日期: 2023-09-27 18:20:01
首先,对不起我的愚蠢问题。我有
person{
public string name, addr;
}
我还得到了一个数据上下文,当我调用这个时,它返回一个person实体
myDbcontext dbContext = new myDbcontext();
var _query = from pson in dbContext.GetTable<person>() where pson.name = "somename" select pson ;
return _query.First<person>();
因为我对C#还很陌生。我不知道有没有办法写出像这样的通用函数
getPerson(person => person.name = "somename" && person => person.addr = "some addr")
非常感谢Lĩnh
您可以将条件作为Expression<Func<Person, bool>>
传递,并在查询中使用它:
public Person GetPerson(Expression<Func<Person, bool>> predicate)
{
return (new myDbContext()).GetTable<Person>()
.First(predicate);
}
如果您有以下集合:
var people = (from pson in dbContext.GetTable<person>()).ToList();
你可以写一个这样的方法,根据一个人的名字和地址来匹配他们。
public Person GetPerson(string name, string address)
{
return people.Where(p => p.Name == name && p.Address == address).FirstOrDefault();
}
然后调用函数:
public void YourFunction() {
var person = GetPerson("Darren Davies", "My Address");
if (person != null) {
// Your code here
}
}