我正在尝试使用以下代码按照日期对CSV文件的内容进行排序,这是从我之前发布的问题中提取的代码:
private class CSVEntry
{
public DateTime Date { get; set; }
public string Grp { get; set; }
}
...
List<CSVEntry> csvList = new List<CSVEntry>();
csvList.Add(new CSVEntry() { Date = DateTime.ParseExact(col[7], "dd/MM/yyyy", null), Grp = col[9] });
var results = csvList.OrderBy(x => x.Date); // An error occurs at "Date".
...
但是我得到了这个错误:
'string'不包含名称为'Date'的定义,也没有接受类型为'string'的第一个参数的扩展方法'Date'被找到。
我的输出需要是其他列中的字符串按时间顺序排序。当我尝试使用以下代码显示日期时:
var results = csvList.Where(x => x.Grp == "DEFAULT").OrderBy(x => x.Date);
它可以完美地按照日期的先后顺序排序输出。但是这次我不想显示日期,而是想显示上面提到的其他列中的字符串。我尝试使用了
var results = csvList.Select(x => x.Grp).OrderBy(x => x.Date);
但是我仍然得到了相同的错误。我错在哪里了?我是LINQ的新手,对于List<T>
和IEnumerable<T>
不熟悉,这是我第一次使用它们。
DateTime.ParseExact(col[7], "dd/MM/yyyy", null)
日期格式。 - Mostafizx
视为字符串而不是应该是CSVEntry。你能给我们展示一下你的“using”语句吗? - Ste Griffithsvar results = csvList.OrderBy(x => x.Date);
不应该抛出异常,因为csvList是IEnumerable<CSVEntry>。 - bkqc