获取所有具有与字符串匹配的对象的对象

时间:2019-02-16 18:35:07

标签: c# mongodb linq

我有一个会员数据库。成员有电话号码列表。我正在尝试获取具有指定电话号码的所有成员。

public class Member {
    ...
    public ObservableCollection<Phone> Phones { get; set; }
}

public class Phone {
    public string Number { get; set; }
    ...
}

...

private IMongoCollection<Member> _members;

...
private List<Member> GetMembers(string phone) {
    List<Member> list = _members.Find(
        member => member.Phones.First(
        p=>p.Number == phone).Number.Equals(phone)).ToList();
    return list;
}

GetMembers返回一个空列表(是的,字符串phone与数据库中的成员匹配)。如何获得具有给定电话号码的会员名单?

IMongoCollection文档: http://api.mongodb.com/csharp/current/html/T_MongoDB_Driver_IMongoCollection_1.htm

1 个答案:

答案 0 :(得分:1)

使用Where来检索与其手机中的.Any具有所需号码的成员:

var result = _members.Where(m => m.Phones.Any(p => p.Number == phone));

更正-正如@bwoogie指出,IMongoCollection没有Where函数,而是Find

var result = _members.Find(m => m.Phones.Any(p => p.Number == phone));