小编dca*_*tro的帖子

.NET一次迭代IEnumerable中的几个元素

给定一个集合,我需要一次遍历所有元素三(或其他一些数量).例如:

string[] exampleData = {"John", "Doe", "1.1.1990", "Jane", "Roe", "2.2.1980"}

for(int i = 0; i < exampleData.Length; i += 3) {
    CreateUser(foreName: exampleData[i], surName: exampleData[i+1], dateOfBirth: exampleData[i+2]);
} 
Run Code Online (Sandbox Code Playgroud)

如果exam​​pleData是IEnumerable而不是数组,我怎么能有效地重现这个?

.net c# linq

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

顶级任务导致错误"当前的SynchronizationContext可能不会用作TaskScheduler."

我还没有看到答案,尽管我已经查看了stackoverflow和文档.

如果我调用从计时器处理程序或其他任务创建任务的代码,则此错误将在下面的ContinueWidth上出现.例如,如果它被包装在另一个任务中,每个间隔(例如每1秒)创建一个任务,如下所示.我有高级别任务的唯一原因是每个间隔创建这些较低的任务.

//更高级别的任务创建

...

Task task = Task.Factory.StartNew(new Action(UpdateAllDuringInterval));
Run Code Online (Sandbox Code Playgroud)

...

    private void UpdateAllDuringInterval()
    {
        Stopwatch stopWatch = new Stopwatch();

        do
        {
            // Start the stopwatch
            stopWatch.Start();

            // Create tasks
            List<Task> tasks = CreateTasksAndStart();

            // Wait for the tasks to complete if testing, since want to check results
            if (this._testMode)
            {
                Task[] taskArray = tasks.ToArray();
                Task.WaitAll(taskArray);
            }

            if (!_testMode)
            {
                // Get remaining time to complete interval and sleep for that time
                int remainingTimeInMilliseconds = this._pollingIntervalInMilliseconds -
                                                  (int) stopWatch.Elapsed.TotalMilliseconds;
                    // truncating …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading task

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

字符串实例行为与对象不同

string是引用类型(类似于object).为什么在以下场景中的diff行为 - 在创建字符串和对象的实例时?

我理解字符串中不变性等的概念,但这与分配给字符串的值(不会改变)有关.我的问题更多的是为什么s2正在创建另一个完整的实例,而如果我已经完成了对象它不会这样做?

在此输入图像描述

字符串示例

class Program
{
    static void Main(string[] args)
    {
        string s1 = "Hello";
        string s2 = s1;

        s1 = null;
        Console.WriteLine("s1 = " + s1);
        Console.WriteLine("s2 = " + s2);
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:s2仍然打印"你好"

对象的例子

class Program
{
    static void Main(string[] args)
    {
        Name s1 = new Name();
        s1.id = 5;
        Name s2 = s1;

        s1 = null;
        Console.WriteLine("s1 = " + s1.id);
        Console.WriteLine("s2 = " + s2.id);
        Console.ReadLine();
    }
}

public class Name
{
    public …
Run Code Online (Sandbox Code Playgroud)

c#

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

使用SerializationInfo中的值获取成员

有没有办法知道被添加到的实例,其成员SerializationInfoGetDataObject一个方法ISerializable的对象?

c# serialization

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

类型参数在泛型对象实例化的构造函数中是否有用?

我知道自Java 7以来,在实例化过程中在构造函数中重复泛型类的类型是一种冗余.但是钻石操作员<>怎么样,重复它呢?换句话说,我想知道这有什么区别:

List<String> Fruits = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

还有这个

List<String> Fruits = new ArrayList(); 
Run Code Online (Sandbox Code Playgroud)

或这个

 Map<Integer, String> students = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

还有这个

 Map<Integer, String> students = new HashMap();
Run Code Online (Sandbox Code Playgroud)

先感谢您

java generics instantiation diamond-operator

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

IndexOutOfRangeExpection 发生在 Dictionary.Add 方法上

我在向通用字典 (WinRT C#) 添加值时遇到 IndexOutOfRange 异常。下面是我的代码和异常的堆栈跟踪。

代码:

if (!data.TryGetValue(index, out cells))
{
   cells = new CellCollection();
   data.Add(index, cells);
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

在 System.Collections.Generic.Dictionary 2.Insert(TKey key, TValue value, Boolean add) at System.Collections.Generic.Dictionary2.Add(TKey 键,TValue 值)

我不希望在添加时发生这种超出范围的异常。我的应用程序仅使用单线程。我已将值添加到字典中,并在不需要时使用 GC.Collect() 将其从字典中删除。然后根据需要添加该值。

任何人都可以提出解决此异常的建议吗?

c# generics dictionary windows-runtime indexoutofrangeexception

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

计算子组的行而忽略重复项

我找不到以抽象和一般方式描述我的问题的方法,所以我只提供一个最小的例子:

假设我有这3个简单的表格:

CREATE TABLE Document(
  [Id] int IDENTITY(1, 1) NOT NULL PRIMARY KEY,
  [Title] nvarchar(MAX),
  [Patient] nvarchar(MAX)
);

CREATE TABLE Link(
  DocumentId INT FOREIGN KEY REFERENCES Document(Id),
  Text nvarchar(max)  
);

CREATE TABLE ReadStatus( 
  DocumentId INT FOREIGN KEY REFERENCES Document(Id),
  IsRead Bit NOT NULL,
  UserId Int NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
  • 我们有一套文件
  • 文档可以包含0个或更多链接
  • 用户可以读取文档 - 这由ReadStatus表跟踪,该表将用户与文档相关联,并且IsRead=1表示文档已被该用户读取,并且IsRead=0表示该用户尚未读取该文档.
  • 如果对于文档X和用户A,ReadStatus表中不存在行,我们假设用户A尚未读取文档X.

现在,我需要运行一个查询来选择所有患者.对于每位患者,我需要可用的文件总数和已经阅读的文件数量(即IsRead=1).这是我到目前为止:

SELECT d.Patient,
        COUNT(DISTINCT d.Id) AS DocumentCount,
        COUNT(NULLIF(rs.IsRead,0)) …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server count

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

如何将'Promise.reject`视为一流的功能?

我为什么这样做:

> Promise.reject(3);
< Promise {[[PromiseStatus]]: "rejected", [[PromiseValue]]: 3}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

> var f = Promise.reject;
< undefined

> f(3)
< VM2366:1 Uncaught TypeError: PromiseReject called on non-object
    at reject (<anonymous>)
    at <anonymous>:1:1
Run Code Online (Sandbox Code Playgroud)

javascript promise

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

按名称对数组中的数组进行排序

输入:

$sql = array(

    array("id"=>"47", "name"=>"Jason", "device"=>"idevice"),
    array("id"=>"49", "name"=>"uniKornn", "device"=>"idevice"),
    array("id"=>"50", "name"=>"jacob", "device"=>"idevice")
)
Run Code Online (Sandbox Code Playgroud)

输出:

$sql = array(

    array("id"=>"50", "name"=>"jacob", "device"=>"idevice"),
    array("id"=>"47", "name"=>"Jason", "device"=>"idevice"),
    array("id"=>"49", "name"=>"uniKornn", "device"=>"idevice")
)
Run Code Online (Sandbox Code Playgroud)

我想按名称设置数组$ sql的顺序,并且不区分大小写.

php arrays

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

Thread.exclusive实际上做了什么?

来自API的信息非常稀少 - 也考虑到Thread.critical似乎没有记录.

在Thread.critical中包装一个块,在从临界区退出时恢复原始值,并返回该块的值.

ruby multithreading

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