Хорошо, я хочу отобразить некоторые атрибуты, но только если они имеют время начала текущей даты.
Есть ли способ использовать подстановочный знак для значения? или перечислить несколько значений в предложении Where?
Вот пример. Я подумал, могу ли я вывести текущее время и затем преобразовать его в строку (var time = DateTime.Now.ToString ("yyyyMMddHHmmss");) Я мог бы использовать этот var в качестве фильтра для приписывать. здесь ... где tv.Attribute ("начало"). Значение == время
РЕДАКТИРОВАТЬ **
Я обновил код, чтобы немного прояснить, что мне нужно. Как вы можете видеть ниже, я использую предложение Where для отображения атрибутов, связанных с определенным временем «начала».
Теперь этот пример не будет работать для меня, потому что сначала это должны быть все списки за 24-часовой период, а не конкретное время, как показано ниже, а также потому, что я хочу динамически отображать списки по DateTime.Now.
Итак, мне действительно нужен способ отобразить текущий день, а не конкретное время как логическое значение, и использовать его в моем логическом уравнении для отображения атрибутов «start» по текущему дню.
WebClient c = new WebClient();
c.DownloadStringCompleted += new DownloadStringCompletedEventHandler(c_DownloadStringCompleted);
c.DownloadStringAsync(new Uri("http://www.domain.com/source.xml"));
progressBar1.IsIndeterminate = true;
progressBar1.Visibility = Visibility.Visible;
}
void c_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
return;
var r = XDocument.Parse(e.Result);
listBox2.ItemsSource = from tv in r.Root.Descendants("programme")
where tv.Attribute("start").Value == "20110724190000 +1200"
let channelE1 = tv.Attribute("channel")
let startE1 = tv.Attribute("start")
let nameEl = tv.Element("title")
orderby tv.Attribute("start").Value ascending
let urlEl = tv.Element("desc")
select new TV1guide
{
DisplayName = nameEl == null ? null : nameEl.Value,
ChannelName = channelE1 == null ? null : channelE1.Value,
ChannelURL = urlEl == null ? null : urlEl.Value,
StartTime = startE1 == null ? (DateTime?)null : DateTime.ParseExact(startE1.Value, "yyyyMMddHHmmss zzz", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.AssumeLocal),
};
progressBar1.IsIndeterminate = false;
progressBar1.Visibility = Visibility.Collapsed;
public class TV1guide
{
public string DisplayName { get; set; }
public string ChannelURL { get; set; }
public string ImageSource { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public string ChannelName { get; set; }
}
}
}
Кроме того, я также попробовал то, что предложил HiTech Magic, но я уверен, что синтаксис неправильный.
WebClient c = new WebClient();
c.DownloadStringCompleted += new DownloadStringCompletedEventHandler(c_DownloadStringCompleted);
c.DownloadStringAsync(new Uri("http://www.domain.com/source.xml"));
progressBar1.IsIndeterminate = true;
progressBar1.Visibility = Visibility.Visible;
}
bool MyDateCheckingMethod( DateTime otherDate )
{
// Is this today (ignoring time)?
return otherDate.Date == DateTime.Now.Date;
}
void c_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
return;
var r = XDocument.Parse(e.Result);
listBox2.ItemsSource = from tv in r.Root.Descendants("programme")
where MyDateCheckingMethod(tv.Attribute("start").Value)
let channelE1 = tv.Attribute("channel")
let startE1 = tv.Attribute("start")
let nameEl = tv.Element("title")
orderby tv.Attribute("start").Value ascending
let urlEl = tv.Element("desc")
select new TV1guide
{
DisplayName = nameEl == null ? null : nameEl.Value,
ChannelName = channelE1 == null ? null : channelE1.Value,
ChannelURL = urlEl == null ? null : urlEl.Value,
StartTime = startE1 == null ? (DateTime?)null : DateTime.ParseExact(startE1.Value, "yyyyMMddHHmmss zzz", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.AssumeLocal),
};
progressBar1.IsIndeterminate = false;
progressBar1.Visibility = Visibility.Collapsed;
public class TV1guide
{
public string DisplayName { get; set; }
public string ChannelURL { get; set; }
public string ImageSource { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public string ChannelName { get; set; }
}
}
}