小编Sea*_*ean的帖子

将字典转换为List <KeyValuePair>

我知道可以将KeyValuePair的List转换为Dictionary,但是有一种快速的方法(除了手动循环)以执行相反的操作吗?

这将是手动方式,

foreach (KeyValuePair<double,double> p in dict)
{
    list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
}
Run Code Online (Sandbox Code Playgroud)

不是那么糟糕,但我只是好奇.

c# generics collections

47
推荐指数
3
解决办法
6万
查看次数

关于聚合函数的Where子句条件

我有以下简单的查询,

SELECT US_LOGON_NAME as Username, 
COUNT(I.IS_ISSUE_NO) as Issues
FROM ISSUES I JOIN USERS U ON I.IS_ASSIGNED_USER_ID = U.US_USER_ID
WHERE I.IS_RECEIVED_DATETIME BETWEEN 20110101000000 AND 20110107000000
GROUP BY U.US_LOGON_NAME; 
Run Code Online (Sandbox Code Playgroud)

我想在选择列表中添加额外的COUNT()函数,但在某些条件下强加它们.这是以某种方式用CASE()语句完成的吗?我尝试在选择列表中放置Where子句,但似乎不允许这样做.我不确定这里是否真的需要子查询,但我不这么认为.

例如,我想要一个COUNT()函数,它只计算某个范围内的问题,然后计算另一个范围内的问题或其他各种条件等:

 SELECT US_LOGON_NAME as Username, 
 COUNT(I.IS_ISSUE_NO (condition here)
 COUNT(I.IS_ISSUE_NO (a different condition here)
Run Code Online (Sandbox Code Playgroud)

等等...

仍按登录名称分组.

谢谢.

sql t-sql sql-server

5
推荐指数
2
解决办法
1万
查看次数

SQL-将长整数转换为日期时间

我有一个具有以下长整数格式的日期的数据库:

20100101000000

当天时间是2010年1月1日,00:00:00。

我希望能够将其转换为普通的SQL Datetime语法并返回。这可能吗?我只能做到这一点:

SELECT CAST(CURRENT_TIMESTAMP as int);
Run Code Online (Sandbox Code Playgroud)

它返回“ 40556”-不完全是Im之后的内容。

sql t-sql

4
推荐指数
1
解决办法
3076
查看次数

使用ExpressionVisitor获取所有"where"调用

我有一个查询,像这样:

var query = from sessions in dataSet
                    where (names.Contains(sessions.Username))
                    where (sessions.Login.TimeOfAction == dt)                    
                    select new {    sessions.Username, 
                                    sessions.Login, 
                                    sessions.Logout, sessions.Duration };
Run Code Online (Sandbox Code Playgroud)

我想实现一个ExpressionVisitor来提取where子句作为Lambda,但到目前为止只能使用一个名为'InnermostWhereFinder'的类来获得第一个,该类来自TerraServer Web服务的自定义查询提供程序上的MSDN教程.

它是:

internal class InnermostWhereFinder : ExpressionVisitor
    {
        private MethodCallExpression innermostWhereExpression;

        public MethodCallExpression GetInnermostWhere(Expression expression)
        {
            Visit(expression); 
            return innermostWhereExpression;
        }

        protected override Expression VisitMethodCall(MethodCallExpression expression)
        {
            if (expression.Method.Name == "Where")
                innermostWhereExpression = expression;

            Visit(expression.Arguments[0]);

            return expression;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我曾经尝试过大量调整这个类来返回两个没有成功的子句.找不到任何关于此的好文档,任何人都可以帮忙吗?我认为这最终需要产生多个可以使用的LambdaExpression对象.

c# linq lambda iqueryable expression-trees

3
推荐指数
1
解决办法
3376
查看次数