小编sta*_*ser的帖子

返回IEnumerable <T>与IQueryable <T>

返回IQueryable<T>IEnumerable<T>?有什么区别?

IQueryable<Customer> custs = from c in db.Customers
where c.City == "<City>"
select c;

IEnumerable<Customer> custs = from c in db.Customers
where c.City == "<City>"
select c;
Run Code Online (Sandbox Code Playgroud)

两者都会延迟执行,何时应该优先于另一个?

c# linq ienumerable iqueryable linq-to-sql

1051
推荐指数
13
解决办法
22万
查看次数

Parallel.ForEach vs Task.Factory.StartNew

下面的代码片段有什么区别?两个都不会使用线程池线程吗?

例如,如果我想为集合中的每个项目调用一个函数,

Parallel.ForEach<Item>(items, item => DoSomething(item));

vs

foreach(var item in items)
{
  Task.Factory.StartNew(() => DoSomething(item));
}
Run Code Online (Sandbox Code Playgroud)

c# parallel-extensions task-parallel-library c#-4.0

260
推荐指数
4
解决办法
13万
查看次数

ArraySegment <T>类有什么用?

我只是在对ArraySegment<byte>类进行子MessageEncoder类化时遇到了这种类型.

我现在明白它是给定数组的一部分,取一个偏移量,不可枚举,并且没有索引器,但我仍然无法理解它的用法.有人可以用一个例子解释一下吗?

.net c# arrays

89
推荐指数
6
解决办法
4万
查看次数

ThreadPool.QueueUserWorkItem与Task.Factory.StartNew

下面有什么区别

ThreadPool.QueueUserWorkItem
Run Code Online (Sandbox Code Playgroud)

VS

Task.Factory.StartNew
Run Code Online (Sandbox Code Playgroud)

如果对于某些长时间运行的任务调用上述代码500次,是否意味着将占用所有线程池线程?

或者TPL(第二选项)是否足够聪明,只能占用少于或等于处理器数量的线程?

c# multithreading threadpool c#-4.0

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

静态只读字段初始化程序与静态构造函数初始化

以下是初始化静态只读字段的两种不同方法.两种方法之间有区别吗?如果是的话,什么时候应该优先于另一个呢?

class A
{
    private static readonly string connectionString =
        WebConfigurationManager.ConnectionStrings["SomeConnection"].ConnectionString;
}

class B
{
    private static readonly string connectionString;

    static B()
    {
        connectionString =
            WebConfigurationManager.ConnectionStrings["SomeConnection"].ConnectionString;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# static-constructor initializer c#-3.0 c#-2.0

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

列出<T>线程安全

我使用以下代码

var processed = new List<Guid>();
Parallel.ForEach(items, item => 
{
    processed.Add(SomeProcessingFunc(item));
});
Run Code Online (Sandbox Code Playgroud)

上面的代码线程是否安全?处理后的列表是否有可能被破坏?或者我应该在添加之前使用锁?

var processed = new List<Guid>();
Parallel.ForEach(items, item => 
{
    lock(items.SyncRoot)
        processed.Add(SomeProcessingFunc(item));
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# list parallel-extensions task-parallel-library c#-4.0

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

linq to sql loadwith vs associatewith

loadwith和associatewith之间有什么区别.从我阅读的文章看来,loadwith似乎用于加载附加数据(例如客户的所有订单).而AssociateWith用于过滤数据.

这是正确的理解吗?如果有人能够通过基于示例的解释来解释这一点,那将是很好的.

c# linq-to-sql

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

在Windows服务启动之间创建依赖关系

我创建了一个设置为自动启动的Windows服务.此服务在启动时连接到数据库服务.问题是数据库服务似乎是在我的服务之后启动的.是否有一种编程方式来定义此依赖项,以便在数据库服务启动后启动我的服务.

我发现这篇文章http://www.boyce.us/windows/servertipcontent.asp?ID=7谈到添加一个注册表项来做到这一点.我想知道是否有C#方式来做到这一点?

更新:

添加到上面的问题.这是另一种情况.使用installshied安装服务,不需要projectinsaller.似乎installshield查找从ServiceBase类派生的类并安装每个服务.如何在这种情况下添加依赖项?

c# windows windows-services .net-4.0

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

查询优化器运算符选择 - 嵌套循环与散列匹配(或合并)

我的一个存储过程执行时间过长.看一下查询执行计划,我能够找到操作耗时太长时间.它是一个嵌套的循环物理运算符,具有外部表(65991行)和内部表(19223行).在嵌套循环上,它显示估计行= ​​1,268,544,993(乘以65991乘19223),如下所示:

在此输入图像描述

我阅读了一些关于用于连接的物理运算符的文章,并且对于这种情况是否嵌套循环或散列匹配更好一点感到困惑.从我可以收集到的:

散列匹配 - 当没有有用的索引可用时,优化器使用散列匹配,一个表明显小于另一个表,表不在连接列上排序.散列匹配也可能表示可以使用更有效的连接方法(嵌套循环或合并连接).

问题:在这种情况下,哈希匹配会比嵌套循环更好吗?

谢谢

t-sql sql-server-2008 sql-execution-plan

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

linq to sql递归查询

EmployeeId  Name  ManagerId
------------------------------
1           A     null
2           B     null
3           C     1
4           D     3
5           E     2
Run Code Online (Sandbox Code Playgroud)

只是使用这个表,如何编写linq查询(使用linq to sql)来递归获取父数据.

例如,如果选择的雇主ID为4,则应该给出Id:4,3,1的雇员列表

谢谢.

c# linq linq-to-sql

16
推荐指数
2
解决办法
8201
查看次数