我习惯这样做(来自其他语言):
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).我熟悉创建列表和访问它们的元素.)
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.
是否在任何地方指定了此行
我正在Roslyn中实现C#规范7.16.2"查询表达式转换".但是,我在7.16.2.5"选择子句"中遇到了问题.
它读
表单的查询表达式
Run Code Online (Sandbox Code Playgroud)from x in e select v被翻译成
Run Code Online (Sandbox Code Playgroud)( e ) . Select ( x => v )除非v是标识符x,否则翻译很简单
Run Code Online (Sandbox Code Playgroud)( 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")
我的代码不会产生与示例匹配的结果,因为(根据"除非"行),我将其翻译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条款)说
表单的查询表达式
Run Code Online (Sandbox Code Playgroud)from x in e group v by k被翻译成
Run Code Online (Sandbox Code Playgroud)( e ) . GroupBy ( …
我继承了一些试图设置属性的代码:
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)
在当前使用中,异常被捕获并抛出很多,所以我想首先进行检查: …
在 MS SQL Server 2005 中执行的脚本中,是否可以将触发器从一个数据库复制到另一个数据库?
我被要求为我的项目正在使用的触发器编写一个测试脚本。我们的测试结构是创建一个仅包含被测试对象的空数据库,然后在该数据库上执行一个脚本,该脚本创建测试所需的所有其他对象,填充它们,运行所需的任何测试,将结果与预期结果进行比较,然后丢弃除被测物体之外的所有物体。
我不能只创建一个除了触发器之外为空的数据库,因为触发器依赖于多个表。我的测试脚本当前在创建所有必需的表后运行 CREATE TRIGGER,但这不会执行,因为测试脚本不允许包含正在测试的对象。
建议的是,我不运行 CREATE TRIGGER,而是以某种方式将脚本中该点的触发器从实时数据库复制到测试数据库。我快速谷歌了一下,但没有找到一种方法来做到这一点。因此我的问题是——这是否可能,如果可以,我该怎么做?
当我对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#对我来说还不够,所以我利用新开源的Roslyn来扩展它,比如通过修改它来使用法语引号.
但我不想在命令行上构建我新发布的法语文件!我想要Intellisense!我想要一个漂亮的UI!简而言之,我想让Visual Studio使用我的 Roslyn,而不是微软的.
我可以这样做吗?如果是这样,怎么样?
(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) 我的解决方案中有一个列表定义,我希望以编程方式能够基于该列表定义创建列表,任何人都可以告诉我该怎么做?
<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)
我正在研究一个多次调用网址的项目
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:
c# ×9
list ×2
roslyn ×2
.net ×1
modal-dialog ×1
reflection ×1
sharepoint ×1
sql ×1
sql-server ×1
templates ×1
triggers ×1