小编Sli*_*009的帖子

如何将String转换为JsonObject

我正在使用a httprequest将Json从Web转换为字符串.

它可能很简单,但我似乎无法将此字符串转换为javax.json.JsonObject.

我怎样才能做到这一点?

java json httprequest

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

如何使用Parallel.For(..)填充主线程上的List <T>

想象一下,我为一个有很多属性的学生提供了以下课程,让我们简化它:

public class Student{
    public Int64 id { get; set; }
    public String name { get; set; }
    public Int64 Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在主线程上我有以下列表:

List<Student> allStudents = new List<Student>();
Run Code Online (Sandbox Code Playgroud)

假设我在Excel文件中有500名学生,我想收集它们并将它们插入列表中.我可以做如下的事情:

for(int i = startRow; i < endRow; i++){
    Student s = new Student();

    //Perform a lot of actions to gather all the information standing on the row//

    allStudents.Add(s);
}
Run Code Online (Sandbox Code Playgroud)

现在因为在Excel中收集信息非常慢,因为必须执行许多操作.所以我想使用Parallel.For,我可以想象做以下事情:

Parallel.For(startRow, endRow, i => {
    Student s = new Student();

    //Perform a lot of actions to gather …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing multithreading locking

4
推荐指数
1
解决办法
97
查看次数

如何将List <T>插入数据库

如何在不迭代整个列表并将每个对象单独保存到数据库的情况下,一次将List保存在数据库中.

//So not like this solution
foreach(T t in data){
    //Call function to save with stored procedure
    Database.Save(t);
}
Run Code Online (Sandbox Code Playgroud)

(也没有使用实体框架)(我似乎只能在StackOverflow上获得基于实体框架或Dapper.Net的解决方案.)

通过以某种方式将列表发送到数据库并使用存储过程,这是否可行?


@Edit补充资料

我目前正在运行SQL 2012,并且希望能够在某些内容不起作用的情况下重新注册所有内容!

c# sql-server

4
推荐指数
1
解决办法
1470
查看次数

具有多列的树视图

我正在尝试在 WPF 中创建具有多列的树视图。我很清楚,关于这个主题确实有很多问题。然而,他们在绑定数据时似乎采取了不同的方法。每个人似乎都设置了itemssource,就像我在后面的代码中填充treeview.items一样。这也是我不确定是否使用 ItemTemplate / HierarchicalDataTemplate 或正确方法来完成它的原因。(我感觉这应该是一个简单的步骤。)

我现在的代码如下:

Mainwindow.xaml 中的树视图

<TreeView x:Name="ProcesTree" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <TreeView.ItemTemplate>
        <ItemContainerTemplate>
            <Grid>
                <TextBlock Text="{Binding procesNummer}" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="0"/>
                <TextBlock Text="{Binding procesNaam}" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="0"/>
            </Grid>
        </ItemContainerTemplate>
    </TreeView.ItemTemplate>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

主窗口.xaml.cs

public List<Proces> processen = new List<Proces>();

public MainWindow() {
    InitializeComponent();
    processen = Database.getHoofdProcessen();
    processen = Extensions.OrderByAlphaNumeric(processen, p => p.procesNummer);

    foreach (Proces p in processen) {
        writeProcesses(p, ProcesTree.Items);
    }
}


public void writeProcesses(Proces p, ItemCollection tv) {
    tv.Add(p);

    List<Proces> processen = Database.getProcessenOnNummer((p.procesNummer + ".%"));
    if (processen.Count …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview datatemplate

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

调整数组大小以丢失空值

我已经制作了一个循环,每个月从当前年龄到年份x循环,比如80.

我有一个数组yearCalculation年和每年计算包含一个monthCalculation数组.(以防万一有人想对Lists发表评论,我目前正在使用数组,想看看是否有一个简单的解决方案.)

这看起来如下:

yearCalculations[] years = years.InstantiateArray(//Number of years, [80 minus age]//);
monthCalculations[] months = months.InstantiateArray(//Number of months in a year, [this should be 12]//);
Run Code Online (Sandbox Code Playgroud)

在实例化之后,我循环遍历所有时段并用各种计算填充它们.(但是,在达到年龄x之后,所有计算都将导致零):

for (int i = 0; i < yearCalculations.Length; i++) {
    for (int j = 0; j < yearCalculations[i].monthCalculations.Length; j++) {
        Double age = calculateAge(birthDate, dateAtTimeX);
        if(age < ageX){
            //Do all sorts of calculations.
        }else{
            //Break out of the loops
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你在X(80)年代可以理解的那样,计算将完成,但去年的计算将包含一些结果,而不进行计算.让我们说这是从7月开始.调整此数组大小的最简单方法是什么,删除所有月份而不进行计算(所以索引6和之后)?


仅仅为了完整性,这里是instantiateArray函数;

public static T[] InstantiateArray<T>(this T[] t, Int64 …
Run Code Online (Sandbox Code Playgroud)

c# arrays dynamic-arrays

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

批量导入Azure

对于批量插入,我有一个数据文件和一个格式文件(xml);

  • File.dat
  • File.xml

这正在使用批量插入语句处理OnPremises,但是在Azure中,格式文件似乎有问题。以下是我已采取的步骤


设置存储访问

  • 创建一个共享访问签名
  • 将容器访问策略设置为'Blob(仅对Blob进行匿名读取访问)

创建存储的数据库范围凭证

CREATE DATABASE SCOPED CREDENTIAL StorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'This is my secret' (Shared Access Signature Key)
Run Code Online (Sandbox Code Playgroud)

创建一个外部数据源

CREATE EXTERNAL DATA SOURCE Storage
WITH  (
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://<storagename>.blob.core.windows.net/<containername>', 
    CREDENTIAL = StorageCredential
);
Run Code Online (Sandbox Code Playgroud)

文件查询(批量插入或Openrowset)

BULK INSERT <Schema>.<Table>
FROM 'File.dat'
WITH (
    DATA_SOURCE = 'Storage',
    FORMATFILE = 'File.xml'
)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM OPENROWSET(
    BULK 'File.dat',
    DATA_SOURCE = 'Storage',
    FORMATFILE =  'File.xml'
) AS DataFile;
Run Code Online (Sandbox Code Playgroud)

它们都无法处理错误;

“无法批量加载,因为文件不完整或无法读取” …

t-sql bulkinsert azure-sql-database

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