小编Sha*_*ica的帖子

如何声明by-reference参数变量以在Linq查询中使用?

我有MyClass一个方法的类:

public bool MyMethod(out DateTime? MyDate) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想以下列方式调用此方法:

var q = from mc in MyClasses.AsEnumerable()
        from output in mc.MyMethod(out dt) // how to declare dt?
        select new { mc, output, dt };
Run Code Online (Sandbox Code Playgroud)

显然这不编译,因为我没有声明dt.我可以在查询之外声明它,但这并没有给我一种温暖的模糊感:(a)我不喜欢在大于必要范围的级别声明变量,并且(b)它不是立即和直观的显而易见的是,将为查询中的每一行正确计算该值.

是否有一些语法允许我DateTime? dt在查询中声明?

c# linq parameters

0
推荐指数
2
解决办法
606
查看次数

如何批量更新视图?

我的数据库有大约30个视图,其中大多数都引用了该服务器上的另一个数据库(称之为DB1).

现在,在不考虑原因的情况下,我需要将所有这些视图更新到DB2本地服务器上.

我不想在每个视图上手动执行此操作.是否有一些我可以运行的SQL查询将在我的所有视图中用'DB2'替换所有出现的字符串'DB1'?

sql t-sql sql-server-2008

0
推荐指数
2
解决办法
1653
查看次数

IIS7.5不显示Flash对象

我正在ASP.NET MVC中编写一个MVC Web应用程序,该应用程序应该是由我的一位同事编写的Flash对象.我不知道任何Flash; 他不懂任何C#/ ASP.NET; 所以问题就是这样!

我网页上的代码如下所示:

<head>
(blah blah blah...)
  <script type="text/javascript" src="/FlashStuff/js/swfobject.js"></script>
  <script type="text/javascript">
    var GP_MLM_flashvars = {};
    GP_MLM_flashvars.remote = 'true';
    GP_MLM_flashvars.streamprovider = 'localweb';
    GP_MLM_flashvars.referer = '';
    GP_MLM_flashvars.bgcolor = '#000033';
    var GP_MLM_params = {};
    GP_MLM_params.menu = 'false';
    GP_MLM_params.allowFullScreen = 'true';
    GP_MLM_params.salign = 'tl';
    GP_MLM_params.scale = 'noscale';
    GP_MLM_params.wmode = 'opaque';
    GP_MLM_params.bgcolor = '#000033';
    var GP_MLM_attributes = {};
    GP_MLM_attributes.id = 'GP_MLM';
    GP_MLM_attributes.name = 'GP_MLM';
    swfobject.embedSWF('/FlashStuff/swf/GP_MLM.swf', 'GP_MLM', '100%', '100%', '9', '/FlashStuff/expressInstall.swf', GP_MLM_flashvars, GP_MLM_params, GP_MLM_attributes);          
  </script>
</head>
(etc.)
Run Code Online (Sandbox Code Playgroud)

当我使用VS Development Server调试此页面时,它看起来非常愉快并且工作正常.但是,如果我尝试使用本地IIS(7.5)服务器进行调试,则Flash对象不会被加载.

我猜我需要在IIS上做一些事情来启用Flash对象 …

flash asp.net-mvc visual-studio-2010 iis-7.5

0
推荐指数
1
解决办法
4722
查看次数

模态对话框无法获得焦点

我正在处理与C#WinForms应用程序相关的错误,该应用程序以启动画面启动,然后关闭启动画面并打开登录表单.在某些电脑上一切正常.在其他情况下,会出现登录表单,但闪烁的标题栏会在几次闪烁之后完全失去焦点.光标仍在"用户名"文本框中闪烁,但应用程序没有焦点,当您开始输入时,没有任何反应,这对用户来说非常烦人.

操作系统运行似乎没有区别(我们已经尝试过Windows 7和Server 2008),并且在启动应用程序后我们特别没有任何键盘或鼠标输入.

现在 - 有没有人知道什么可能导致应用程序失去焦点?
或者,您将如何调试此问题?我们无法在Visual Studio调试环境中复制问题,但这并不让我感到惊讶,因为我猜这是编译的应用程序如何与操作系统交互的问题......或者我错了?

编辑#1:我认为这是由@vinodpthmn解决的,确保在登录表单出现之前正确关闭了启动画面,但这似乎没有帮助.所以我创建了一个记录器来跟踪所有事件和线程,并找到了以下有趣的日志条目:

Thread 01 - 2012/03/29 12:51:09.693 - Show splash screen
Thread 01 - 2012/03/29 12:51:20.350 - Splash screen closed
Thread 01 - 2012/03/29 12:51:20.490 - Login Form Activated
Thread 01 - 2012/03/29 12:51:20.522 - Login Form Load
Thread 01 - 2012/03/29 12:51:25.694 - Login Form deactivated
Thread 01 - 2012/03/29 12:51:25.694 - Active form =
Thread 01 - 2012/03/29 12:51:25.694 - Active app =
Run Code Online (Sandbox Code Playgroud)

显示活动表单和应用程序的最后一行分别显示Form.ActiveForm和Windows中当前活动的应用程序(此处的代码).它们都是空的/无效的.即便如此,即使在登录表单中加载I调用Activate() …

c# winforms

0
推荐指数
1
解决办法
2421
查看次数

为什么不能在类型T的值上使用Nullable <T>的扩展名?

我有一个扩展方法:

public static int DoStuff(this MyEnum? enumValue) 
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想在一个MyEnum已知不为null 的值上调用它:

MyEnum enumVal = ...
var x = enumVal.DoStuff(); // compiler error!
Run Code Online (Sandbox Code Playgroud)

错误:

错误CS1928:'MyEnum'不包含'DoStuff'的定义,最好的扩展方法重载'MyExtensions.DoStuff(MyEnum?)'有一些无效的参数

我可以通过声明扩展的重载来解决它:

 public static int DoStuff(this MyEnum enumValue)
 {
     return DoStuff((MyEnum?)enumValue); 
 }
Run Code Online (Sandbox Code Playgroud)

或者,我可以显式调用扩展类:

var x = MyExtensions.DoStuff(enumVal);
Run Code Online (Sandbox Code Playgroud)

但这不直观.为什么不能Nullable<T>接受一个类型的扩展T,就像任何正常的方法签名一样?

c# extension-methods nullable

0
推荐指数
1
解决办法
393
查看次数