我无法弄清楚如何在隔离存储中的XML文件中查询输出到xml文件中的值。
我的意思是它将按当天的第一个字母排序,因此它将作为第一个字母返回星期五(因为它中的“F”)。但这不是我想要的,而是按工作日的顺序排序,即星期一,星期二,星期三,星期四,星期五。
有什么方法可以转换包含文本日期的字符串,例如。 “星期一”到DateTime排序?
我正在使用的代码是这样的:
let obv = (string)query.Element("day")
orderby obv
select new obv
答案 0 :(得分:3)
您可以按CultureInfo.CurrentCulture.DateFormat.DayNames
数组中的值索引进行排序:
var daynames = Array.ConvertAll(
CultureInfo.CurrentCulture.DateFormat.DayNames,
d => d.ToUpperInvariant()
);
from ...
let obv = (string)query.Element("day")
orderby Array.IndexOf(daynames, obv.ToUpperInvariant())
select new obv
答案 1 :(得分:0)
这允许您按一周中的任意一天排序:
public class DayOfWeekComparer : IComparer<DayOfWeek>
{
public static int Rank(DayOfWeek firstDayOfWeek, DayOfWeek x)
{
return (int)x + (x < firstDayOfWeek ? 7 : 0);
}
public static int Compare(DayOfWeek firstDayOfWeek, DayOfWeek x, DayOfWeek y)
{
return Rank(firstDayOfWeek, x).CompareTo(Rank(firstDayOfWeek, y));
}
DayOfWeek firstDayOfWeek;
public DayOfWeekComparer(DayOfWeek firstDayOfWeek)
{
this.firstDayOfWeek = firstDayOfWeek;
}
public int Compare(DayOfWeek x, DayOfWeek y)
{
return DayOfWeekComparer.Compare(this.firstDayOfWeek, x, y);
}
}