我正在尝试从我的一个DataTable返回行计数。通常它很容易,我已经做了很多次。但这个独特的案例让我感到不安。我需要根据DateTime列返回行计数,但是基于月份作为其过滤器。这就是我目前失败的原因。
movies = {
2005: ['Munich', 'Steven Spielberg'],
2006: ['The Prestige', 'Christopher Nolan'],
2006: ['The Departed', 'Martin Scorsese'],
2007: ['Into the Wild', 'Sean Penn'],
2008: ['The Dark Knight', 'Christopher Nolan'],
2009: ['Mary and Max', 'Adam Elliot'],
2010: ['The King\"s Speech', 'Tom Hooper'],
2011: ['The Artist', 'Michel Hazanavicius'],
2011: ['The Help', 'Tate Taylor'],
2012: ['Argo', 'Ben Affleck'],
2013: ['12 Years a Slave', 'Steve McQueen'],
2014: ['Birdman', 'Alejandro G. Inarritu'],
2015: ['Spotlight', 'Tom McCarthy'],
2016: ['The BFG', 'Steven Spielberg']
}
userInput = int(input('Enter a year between 2005 and 2016: \n'))
print(movies[userInput])
除此之外,我还尝试了LINQ方法 - 遗憾的是它没有给我任何结果。以下是我试过的LINQ。
sickLCount = Convert.ToInt32(LeaveDays.Compute("COUNT(EmployeeID)", "LeaveType = 0 AND month(Date) = "+ startDate.Value.Month + ""));
答案 0 :(得分:0)
将.Field("Date")
替换为.Field<DateTime>("Date")
您也可以使用Count代替Where:
进行整合LeaveDays.AsEnumerable().Count(r => r.Field<DateTime>("Date").Month == startDate.Value.Month);
答案 1 :(得分:0)
我认为主要问题是在数据表中使用名为month()
的函数。
如果您的数据存储在数据库中,则可以轻松调用month()
功能。但是你的数据库中的数据不再是而不是,它现在就在你的数据表中。您无法在数据表中运行数据库查询功能。
我的建议是,将您的月份作为不同的列 - 请说Months
- 并使用您的startDate.Value.Month
值过滤 列。
Compute
方法中的“过滤器”遵循DataColumn.Expression
property规则。您可能需要查看更多详细信息。