将表达式连接到linq查询

时间:2013-06-27 08:06:58

标签: c# linq expression

首先,抱歉我的愚蠢问题。 我有一个班级

person{

public string name, addr;
}

我还有一个datacontext,当我调用这个

时返回一个人实体
 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")
非常感谢 灵

2 个答案:

答案 0 :(得分:1)

您可以将条件作为Expression<Func<Person, bool>>传递并在查询中使用:

public Person GetPerson(Expression<Func<Person, bool>> predicate)
{
    return (new myDbContext()).GetTable<Person>()
        .First(predicate);
}

答案 1 :(得分:0)

如果您有以下收藏品:

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
       }
   }