我有一个像这样的C#代码,
RowSet rows = cassandraSession.Execute("select * from mytable");
foreach( var row in rows)
{
DateTimeOffset dt = (DateTimeOffset)row["last_modified"];
// Construct the primary key and delete an row ....
}
当我将数据插入mytable时,我将DateTime.UtcNow.Ticks作为列的值" last_modified" [时间戳]。但是,当上面的代码运行时,它总是在行[" last_modified"]中抛出ArgumentOutOfRangeException。
不幸的是,last_modified是主键的一部分,我现在无法查询并删除。
任何想法和解决方案?
答案 0 :(得分:0)
Cassandra timestamp
在C#驱动程序中表示为DateTimeOffset
(不是刻度的长值)。
要获取作为RowSet
的一部分检索的列,您可以使用Columns
属性。
RowSet rs = cassandraSession.Execute("select * from mytable");
//Print all the column names
Console.WriteLine(string.Join(", "), rs.Columns.Select(c => c.Name));
foreach (var row in rs)
{
//Use the typed GetValue<T>() method
DateTimeOffset dt = row.GetValue<DateTimeOffset>("last_modified");
}