将表达式联接到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

将表达式联接到linq查询

您可以将条件作为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
       }
   }