可重复使用Linq to XML方法来过滤我的查询结果

时间:2011-03-30 13:40:02

标签: c# xml linq facebook

我正在尝试建立一个Facebook应用程序,我可以管理我的朋友。现在我正在进行某种高级搜索。我使用FQL和LINQ to XML来适应我的搜索。

但我希望我的搜索方法可以重复使用。所以我可以组合多个过滤器。

这是我的想法:

 private var friends;


 public setFriends(XDocument doc)
        {
            friends = (from usr in doc.Descendants("user")

                     select new User
                     {
                         name = usr.Element("name").Value,
                         email = usr.Element("email").Value,
                         pic = usr.Element("pic_square").Value,
                         city = usr.Element("city").Value,


                     });

        return friends;

    }



public void filterFriendsByName() 
    {
        friends = // some code to filter my previous results by name
    }

 public  void filterFriendsByCity() 
    {
        friends = // some code to filter friends by city
    }

//more filters

正如您所看到的,我仍然缺少一些代码。我不知道我是否还可以从这里修改我的查询。我希望你能告诉我怎么做到这一点。或者指出我正确的方向,使这成为可能。

谢谢!

1 个答案:

答案 0 :(得分:4)

您的代码非常混乱,无法编译。但是当你清理它并纠正错误时,你会发现friends变量将获得类型IEnumerable<User>。之后,您可以继续过滤filterFriendsByName方法,就像这样。

public void filterFriendsByName(string name) 
{
    return friends.Where(x=> x.name == name);
}

friends不会被更改,但上面的方法将返回已过滤的Friends By Name。同样适用于城市