小编fin*_*ook的帖子

在C#中快速检查字符串是XML还是JSON的方法

我在控制台应用程序中使用C#,我需要一种快速方法来检查从另一个服务返回的字符串是XML还是JSON.

我知道,如果这只是XML,我可以检查它,一个模式,或者如果它只是JSON我可以尝试用JSON.Net解析它,但有一个更快的方式 - 也许用建立.NET函数 - 只是为了在继续处理它之前告诉它是什么?

c# xml json json.net

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

跳过/忽略插入时的重复行

我有以下表格:

DataValue

DateStamp    ItemId   Value
----------   ------   -----
2012-05-22   1        6541
2012-05-22   2        12321
2012-05-21   3        32
Run Code Online (Sandbox Code Playgroud)

tmp_holding_DataValue

DateStamp    ItemId   Value
----------   ------   -----
2012-05-22   1        6541
2012-05-22   4        87
2012-05-21   5        234
Run Code Online (Sandbox Code Playgroud)

DateStamp并且ItemId是主要的关键列.

我正在做一个插件,它会在一天中定期运行(在存储过程中):

insert into DataValue(DateStamp, ItemId, Value)
select DateStamp, ItemId, Value from tmp_holding_DataValue;
Run Code Online (Sandbox Code Playgroud)

这会将数据从保持表(tmp_holding_DataValue)移动到主数据表(DataValue)中.然后截断保持表.

问题是,如示例中所示,保持表可以包含主表中已存在的项.由于密钥不允许重复值,因此过程将失败.

一种选择是在insert proc上放置一个where子句,但主数据表有1000万+行,这可能需要很长时间.

是否还有其他方法可以让程序在尝试插入时跳过/忽略重复项?

t-sql sql-server stored-procedures sql-server-2008

25
推荐指数
3
解决办法
6万
查看次数

从批处理文件启动多个控制台应用程序

我正在尝试从Windows中的批处理文件运行一些控制台应用程序.exe文件.

但是,当我运行以下代码时,它只启动第一个应用程序:

"C:\Development\App\bin\Debug1\Application.exe"
timeout 5
"C:\Development\App\bin\Debug2\Application.exe"
timeout 5
"C:\Development\App\bin\Debug3\Application.exe"
timeout 5
"C:\Development\App\bin\Debug4\Application.exe"
timeout 5
"C:\Development\App\bin\Debug5\Application.exe"
timeout 5
Run Code Online (Sandbox Code Playgroud)

(我已经包含了超时以分散初始处理)

有没有办法让脚本文件启动第一个应用程序,然后继续前进并启动其他应用程序?

理想情况下,我希望脚本文件启动子目录中的所有应用程序,这样如果我有Debug\Applications\*.exe或类似它将启动所有类型.exe的应用程序(并可能在每个之间等待5秒).这可能吗?

console batch-file console-application

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

线程睡眠/等到新的一天

我正在循环中运行一个进程,它对每天的操作数量有限制.当它达到这个限制时,我现在已经检查了循环中的时间,看它是否是一个新的日期.

最好的选择是:

  • 继续检查新日期的每秒时间
  • 计算直到午夜的秒数并睡眠那段时间
  • 别的什么?

c# datetime multithreading thread-sleep

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

CsvHelper ConvertUsing不改变输出

我正在尝试使用CsvHelper库的ConvertUsing方法(v 2.4.0).

我已经阅读了有关ConvertUsing的文档但无法使其工作.

我正在使用一个简单的类:

public class Test
{
    public long Id { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有了这个ClassMap:

public class TestClassMap : CsvClassMap<Test>
{
    public override void CreateMap()
    {
        Map(m => m.Id).Name("id").ConvertUsing(row => 11111);
        Map(m => m.Title).Name("title").ConvertUsing(row => row.GetField("title") + " 123");
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用这些代码的代码创建了一个类的实例,然后将其写入CSV:

var test = new Test() { Id = 99, Title = "Test title" };

using (var streamWriter = new StreamWriter("test.csv"))
{ …
Run Code Online (Sandbox Code Playgroud)

c# csv export-to-csv csvhelper

10
推荐指数
2
解决办法
5278
查看次数

如何解决2048游戏的复杂性?

编辑:这个问题不是重复2048游戏的最佳算法什么?

  • 那个问题问"赢得比赛的最佳方式是什么?"
  • 这个问题问"我们怎样才能解决游戏的复杂性?"

他们是完全不同的问题.我对进入"赢"状态需要采取哪些步骤感兴趣 - 我有兴趣了解是否可以计算出可能的步骤总数.


我一直在阅读关于游戏2048的这个问题,该游戏讨论了创建一个能够很好地玩游戏的算法的策略.

接受的答案提到:

游戏是一个离散的状态空间,完美的信息,像国际象棋一样的回合制游戏

这让我想到了它的复杂性.对于像国际象棋这样的确定性游戏,它可以(在理论上)计算出导致胜利状态和向后工作的所有可能的动作,选择继续导致该结果的最佳动作.我知道这会导致大量可能的移动(在宇宙中原子数范围内的东西)..但是2048或多或少复杂?

Psudocode:

for the current arrangement of tiles
    - work out the possible moves
    - work out what the board will look like if the program adds a 2 to the board
    - work out what the board will look like if the program adds a 4 to the board
    - move on to working out the possible moves for the new state …
Run Code Online (Sandbox Code Playgroud)

algorithm logic artificial-intelligence game-theory

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

C#DataTable内部联接与动态列

我试图以与此问题类似的方式将两个DataTable连接在一起:

C#中DataTables的内部联接

我正在尝试将输出变为单个"组合"表,其中包含两个原始表中的列.它们都有一个共同的日期戳列.

给出的答案适用于具有固定列的DataTables,但如果它们是动态创建的,并且可以包含任意数量的列,那么我该如何加入它们呢?

例如

T1 (datestamp, t1Column1, t1Column2, t1ColumnN...)
T2 (datestamp, t2Column1, t2Column2, t2ColumnN...)
Run Code Online (Sandbox Code Playgroud)

我想加入以创建以下内容:

J1 (datestamp, t1Column1, t1Column2, t1ColumnN, ..., t2Column1, t2Column2, t2ColumnN...)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c# datatable ado.net join dataset

6
推荐指数
1
解决办法
4984
查看次数

在一个位置查看多个.Net控制台应用程序的输出

我有一个C#控制台应用程序,我正在部署大约20次(使用不同的配置设置)并运行.正如您可能想象的那样,很难保持和关注运行的20个应用程序正在发生的事情(我最终将把它们部署为Windows服务),那么有什么能够轻松地在一个地方显示这些内容的输出吗?

我已经考虑过日志文件,但是这些文件可能会变得非常快,并且打开并查看很多文件 - 我只想要一些输出来检查事情是否仍按预期运行.

编辑:

我将编写错误并停止/启动数据库的信息.我在这里谈论的是一般处理信息,这与重新访问并不完全相关,但在控制台应用程序中运行时看起来很有趣.

.net c# logging console-application

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

SQL从DB获取X个帐户,可以是可变行数

我有一个AccountAction非规范化的SQL Server表.它是AccountAction表格的扁平化版本,我希望它能够更快地报告数百万行的查询.一个Account可以有很多Actions,所以表看起来类似于:

Account     Action
account1    action1
account1    action2
account1    action10
account2    action5
Run Code Online (Sandbox Code Playgroud)

但是,我在一个简单的存储过程中获取有限子集的信息时遇到了一些麻烦.

select Account, Action
from AccountAction
where ???
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是获得第一个X帐户,以及他们所有的行动.所以这将是一个动态的行数.因此,如果我传入1,使用上面的示例表,我会得到3行(即给我第一个帐户的所有行).

(我不介意帐户名称将在每一行 - 它在其他地方转动)

我是否需要使用ROWNUM或类似的来限制行?我相信这一定是一个比我到目前为止发现的更简单的问题.

编辑

使用TOP的答案将不起作用,在示例中,如果我说"给我一个(第一个)帐户",我会想要返回3行.但我怎么知道会有3个?它充满活力.它们也可能不是顺序的,如果account1的action99在结果中的位置为5500万.

sql sql-server stored-procedures

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

LINQ to Entities中有多对多选择

我有两个表ServiceProvider.它们之间是一个连接表ServiceProvider,只有两个字段 - 两个PK中的每一个都有一个字段.当添加到edmx时,连接的多对多表被抽象掉并且无法看到(如预期的那样).

这很好,除非我想基于给定的服务获得提供者.从这个问题:

看起来答案很简单:

var query = from p in entities.Providers
            from s in entities.Services
            where s.Id == 15
            select p;
Run Code Online (Sandbox Code Playgroud)

但这将返回所有提供者.我在这做错了什么?

.net c# linq-to-entities many-to-many entity-framework

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