小编Raw*_*ing的帖子

在两个列表中应用运算符的C#-idiomatic方法是什么?

我习惯这样做(来自其他语言):

 a = 1, 2, 3;
 b = 5, 1, 2;

 c = a * b;  // c = 5, 2, 6
Run Code Online (Sandbox Code Playgroud)

这需要两个大小相等的列表,并将一个函数应用于其成员,一次一个,以获取结果列表.它可以是一个像乘法(上面)或更复杂的函数一样简单的函数:

 c = b>a ? b-a : 0;  // c = 4, 0, 0
Run Code Online (Sandbox Code Playgroud)

我可以想到在C#中使用几种不同的方法,但我不确定C#训练程序员是如何做到这一点的.在C#世界中进行此操作的正确方法是什么?

(我要问的唯一部分是在哪里 c = f(a,b).我熟悉创建列表和访问它们的元素.)

c# list

61
推荐指数
4
解决办法
2677
查看次数

嵌套对象初始化器语法

Resharper刚刚向我建议了以下重构:

// Constructor initializes InitializedProperty but
// the UninitializedSubproperty is uninitialized.
var myInstance = new MyClass();
myInstance.InitializedProperty.UninitializedSubproperty = new MyOtherClass();

// becomes

var myInstance = new MyClass
    {
        InitializedProperty = { UninitializedSubproperty = new MyOtherClass() }
    };
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这种对象初始化.特别是我不知道怎么做

InitializedProperty = { UninitializedSubproperty = new MyOtherClass() }
Run Code Online (Sandbox Code Playgroud)

没有任何意义 - 它不会分配任何东西InitializedProperty.

是否在任何地方指定了此行

c# specifications object-initializers

28
推荐指数
1
解决办法
7412
查看次数

C#规范7.16.2.5中的不一致

我正在Roslyn中实现C#规范7.16.2"查询表达式转换".但是,我在7.16.2.5"选择子句"中遇到了问题.

它读

表单的查询表达式

from x in e select v
Run Code Online (Sandbox Code Playgroud)

被翻译成

( e ) . Select ( x => v )
Run Code Online (Sandbox Code Playgroud)

除非v是标识符x,否则翻译很简单

( e )
Run Code Online (Sandbox Code Playgroud)

例如

from c in customers.Where(c => c.City == "London")
select c
Run Code Online (Sandbox Code Playgroud)

简单地翻译成

customers.Where(c => c.City == "London")
Run Code Online (Sandbox Code Playgroud)

我的代码不会产生与示例匹配的结果,因为(根据"除非"行),我将其翻译from x in e select x( e ),而不仅仅是e.因此,我的代码将示例翻译成

( customers.Where(c => c.City == "London") )
Run Code Online (Sandbox Code Playgroud)

规范中的示例是错误的,还是我需要进行处理以识别是否需要括起括号?如果是这样,这是在规范的某个地方吗?

同样,7.16.2.6(Groupby条款)说

表单的查询表达式

from x in e group v by k
Run Code Online (Sandbox Code Playgroud)

被翻译成

( e ) . GroupBy ( …
Run Code Online (Sandbox Code Playgroud)

c# linq-query-syntax language-lawyer roslyn

13
推荐指数
1
解决办法
344
查看次数

检查PropertyInfo.SetValue是否会抛出ArgumentException

我继承了一些试图设置属性的代码:

object target = ...    // some instance on which we want to set a property
object value = ...     // some value - in this case, a string
var propertyInfo = ... // some property of target - in this case, not a string

try
{
    propertyInfo.SetValue(obj, value, null);
}
catch (ArgumentException)
{
    // We go off and look for our own way of converting between
    // the type of value and the type of the property.
}
Run Code Online (Sandbox Code Playgroud)

在当前使用中,异常被捕获并抛出很多,所以我想首先进行检查: …

c# reflection type-conversion

7
推荐指数
1
解决办法
758
查看次数

将触发器从一个数据库复制到另一个数据库

在 MS SQL Server 2005 中执行的脚本中,是否可以将触发器从一个数据库复制到另一个数据库?

我被要求为我的项目正在使用的触发器编写一个测试脚本。我们的测试结构是创建一个仅包含被测试对象的空数据库,然后在该数据库上执行一个脚本,该脚本创建测试所需的所有其他对象,填充它们,运行所需的任何测试,将结果与预期结果进行比较,然后丢弃除被测物体之外的所有物体。

我不能只创建一个除了触发器之外为空的数据库,因为触发器依赖于多个表。我的测试脚本当前在创建所有必需的表后运行 CREATE TRIGGER,但这不会执行,因为测试脚本不允许包含正在测试的对象。

建议的是,我不运行 CREATE TRIGGER,而是以某种方式将脚本中该点的触发器从实时数据库复制到测试数据库。我快速谷歌了一下,但没有找到一种方法来做到这一点。因此我的问题是——这是否可能,如果可以,我该怎么做?

sql sql-server triggers sql-server-2005

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

实体框架在视图中选择了太多列

当我对SQL表使用Entity Framework时,它只引用生成的SQL中的必要列:

ctx.Types.Select(rdi => rdi.Name)
Run Code Online (Sandbox Code Playgroud)

SELECT [Extent1].[Name] AS [Name]
FROM [dbo].[Types] AS [Extent1]
Run Code Online (Sandbox Code Playgroud)

但是,如果我对SQL视图进行类似的查询,Entity Framework将生成引用视图中每个列的 SQL :

ViewTypes.Select(rdi => rdi.Name)
Run Code Online (Sandbox Code Playgroud)

SELECT [Extent1].[Name] AS [Name]
FROM (SELECT 
      [ViewTypes].[Name] AS [Name], 
      ... every other column in my view ...
      FROM [dbo].[ViewReferenceDataTypes] AS [ViewReferenceDataTypes]) AS [Extent1]
Run Code Online (Sandbox Code Playgroud)

我确信SQL Server将执行自己的优化,最终忽略它不关心的所有列,但这仍然会导致大量的SQL发送到服务器.(我的实际例子包括一个连接,这导致选择了几个表中的每一列......)

Entity Framework是否有充分理由这样做?有没有办法让它这样做?

c# entity-framework-5

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

如何在Visual Studio中使用更改的Roslyn

C#对我来说还不够,所以我利用新开源的Roslyn来扩展它,比如通过修改它来使用法语引号.

但我不想在命令行上构建我新发布的法语文件!我想要Intellisense!我想要一个漂亮的UI!简而言之,我想让Visual Studio使用我的 Roslyn,而不是微软的.

我可以这样做吗?如果是这样,怎么样

c# visual-studio roslyn

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

C#CancelButton关闭对话框?

(VS2005,.Net 2.0)

我有一个使用ShowDialog()方法显示为对话框的表单.表单的CancelButton属性设置为窗体上的按钮.即使我将该按钮的DialogResult设置为None,单击该按钮仍会关闭对话框.我不希望这种情况发生 - 我希望能够控制对话框是否关闭.

表单的AcceptButton不会出现此问题 - 将该按钮的DialogResult设置为none,我可以进行必要的处理,然后决定是否手动设置表单的DialogResult以使其关闭.

我认为如果按下Escape,则CancelButton属性意味着指示应该"点击"的按钮(就像在按下Enter时,AcceptButton只应指示按钮"点击").我错了吗?我错过了我的表格结束的其他原因吗?或者这是一个错误?

编辑:添加了代码.这是带有取消按钮(按钮1)的对话框表单(表单2).取消按钮只是表单的CancelButton,它没有将DialogResult设置为Cancel,但按下按钮仍然关闭表单

    private void InitializeComponent()
    {
        this.button1 = new System.Windows.Forms.Button();
        this.SuspendLayout();
        // 
        // button1
        // 
        this.button1.Name = "button1";
        this.button1.Text = "button1";
        // 
        // Form2
        // 
        this.CancelButton = this.button1;
        this.Controls.Add( this.button1 );
        this.Name = "Form2";
        this.Text = "Form2";
        this.ResumeLayout( false );
    }
Run Code Online (Sandbox Code Playgroud)

c# modal-dialog cancel-button

4
推荐指数
2
解决办法
3万
查看次数

基于列表定义模板创建列表

我的解决方案中有一个列表定义,我希望以编程方式能够基于该列表定义创建列表,任何人都可以告诉我该怎么做?

<ListTemplate
    Name="Mylise"
    Type="10778"
    BaseType="0"
    OnQuickLaunch="TRUE"
    SecurityBits="11"
    Sequence="410"
    DisplayName="My new List"
    Description="My own list"
    Image="/_layouts/images/itgen.png"/>
Run Code Online (Sandbox Code Playgroud)

c# sharepoint templates list

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

c #webrequest挂起

我正在研究一个多次调用网址的项目

request = (HttpWebRequest)WebRequest.Create(url);
request.GetResponse();    
Run Code Online (Sandbox Code Playgroud)

这是我的代码.它处于一个循环中,它可以工作2次,但在第三次迭代时它会挂起.没有崩溃或错误.请帮忙.任何帮助将不胜感激.

错误:等待20分钟后.

System.Net.WebException was unhandled
Message=The operation has timed out
Source=System
StackTrace:
   at System.Net.HttpWebRequest.GetResponse()
   at ConsoleApplication1.Program.Main(String[] args) in C:\WorkSpace\ConsoleApplication1\ConsoleApplication1\Program.cs:line 48
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Run Code Online (Sandbox Code Playgroud)

的InnerException:

.net c#

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