У меня есть файл XML:C# DataView Диапазон дат с помощью LIKE-оператора?
<SMS>
<Number>+447761692278</Number>
<DateTime>2009-07-27T15:20:32</DateTime>
<Message>Yes</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
<SMS>
<Number>+447706583066</Number>
<DateTime>2009-07-27T15:19:16</DateTime>
<Message>STOP</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
Я использую XMLReader для чтения файла в наборе данных и отобразить его в DataGridView. Я хочу, чтобы указать диапазон дат для отображения данных. Например, если элемент содержит дату между INSERT DATE & INSERT DATE. Для этого я использую DATAVIEW и затем заполняю datagridview с помощью dataview вместо набора данных.
В настоящее время у меня есть метод, как показано ниже:
public void DisplayRecSmsByDateRange(string date1,string date2, string readDir)
{
DataSet ds = new DataSet("SMS DataSet");
XmlDataDocument xmlDatadoc = new XmlDataDocument();
xmlDatadoc.DataSet.ReadXml(readDir);
ds = xmlDatadoc.DataSet;
DataView custDV = new DataView(ds.Tables["SMS"]);
custDV.RowFilter = String.Format("(DateTime >= DateTime LIKE '{0}*' AND DateTime <= DateTime LIKE '{1}*')", EscapeLikeValue(date1), EscapeLikeValue(date2));
this.dataGridView1.DataSource = custDV;
}
Проблема заключается в том, что если вы посмотрите на файл XML, элемент содержит время, а также дату. Поскольку меня не интересует временная часть этого элемента, я бы использовал оператор «LIKE» для отображения данных из XML-файла на основе только части даты элемента. В результате этого, когда я пытаюсь выполнить логическую операцию, например, «Покажите мне данные для дат между 2009-07-27 и 2009-07-30», я получаю сообщение об ошибке, поскольку компилятор не нравится что я пытаюсь объединить LIKE-оператор с логическим оператором < =,> = (показано в приведенном выше методе). Есть ли способ обойти это? Мне нужно иметь возможность отображать данные между диапазоном дат, но использовать оператор LIKE для поиска, основанного только на первой части элемента.
Полезно оценить,
С уважением.
Будет надеяться, что те не являются реальной Великобритания мобильного телефона номера, которые вы там разместили. – RichardOD
Обратитесь к http://www.ilearnttoday.com/dataview-row-filter-for-date-time, чтобы использовать как оператор для столбца даты в dataview – Syed