在LINQ中使用参数

时间:2012-08-10 17:09:05

标签: linq c#-4.0

网。我有个疑问。我们如何在LINQ查询的where子句中引入用户定义的变量作为参数。我正在查询XML文件。这是我的代码

    XElement books = XElement.Load(@"Friends.xml");

var titles =
   from book in books.Elements("Friend")
   where (string)book.Element("Date") == "27" && (string)book.Element("Month") == "05"
   select book.Element("Name");

foreach (var title in titles)
   Console.WriteLine(title.Value);

我不想使用值2705来代码,而是想使用变量。如何使用它们?

对于这个愚蠢的问题,我很抱歉,我误解了这个问题。实际上我在日历中阻止某些日期。现在使用

private void calendar1_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
        {....}

仅适用于非阻止日期。因为我尝试使用变量的某一天是一个被阻止的,它不起作用。现在请为我建议一个解决方案。我只需要点击一个日期(阻止或非阻止),我必须运行一个事件。我应该使用哪个事件?

2 个答案:

答案 0 :(得分:2)

使用简单的变量:

 XElement books = XElement.Load(@"Friends.xml");
string yourDate = "27";
string yourMonth = "05";

var titles =
   from book in books.Elements("Friend")
   where (string)book.Element("Date") == yourDate  && (string)book.Element("Month") == yourMonth
   select book.Element("Name");

foreach (var title in titles)
   Console.WriteLine(title.Value);

等等。当然,使用可根据您的代码和系统读取的好名称

答案 1 :(得分:0)

此外,我认为你可以定义一个具有适当属性的书类作为XML标签。例如:

class Book {
  string Date {...} //
}

阅读XML文件时可能非常容易。此外,如果您构建自己的执行XML文件的树数据结构,那就太好了。