小编jar*_*red的帖子

SQL Server:FOR XML PATH - 嵌套/分组

我的数据看起来像:

OrderID CustomerID  ItemID  ItemName
10000   1234        111111  Product A
10000   1234        222222  Product B
10000   1234        333333  Product C
20000   5678        111111  Product A
20000   5678        222222  Product B
20000   5678        333333  Product C
Run Code Online (Sandbox Code Playgroud)

我想在SQL Server中编写一个T-SQL查询来返回如下数据:

<Root>
  <Order>
    <OrderID>10000</OrderID>
    <CustomerID>1234</CustomerID>
    <LineItem>
      <ItemID>11111</ItemId>
      <ItemName>Product A</ItemName>
    </LineItem>
    <LineItem>
      <ItemID>22222</ItemId>
      <ItemName>Product B</ItemName>
    </LineItem>
    <LineItem>
      <ItemID>33333</ItemId>
      <ItemName>Product B</ItemName>
    </LineItem>
  </Order>
  <Order>
    <OrderID>20000</OrderID>
    <CustomerID>5678</CustomerID>
    <LineItem>
      <ItemID>11111</ItemId>
      <ItemName>Product A</ItemName>
    </LineItem>
    <LineItem>
      <ItemID>22222</ItemId>
      <ItemName>Product B</ItemName>
    </LineItem>
    <LineItem>
      <ItemID>33333</ItemId>
      <ItemName>Product B</ItemName>
    </LineItem>
  </Order>
</Root>
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法返回XML中的查询:

FOR XML …
Run Code Online (Sandbox Code Playgroud)

sql-server for-xml-path

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

如何在没有CRLF的情况下在C#中编写WriteAllLines

我正在使用C#并尝试输出几行到ASCII文件.我遇到的问题是我的Linux主机看到这些文件:

ASCII text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)

我需要这个文件只是:

ASCII text
Run Code Online (Sandbox Code Playgroud)

CRLF引起了一些问题,我希望在C#中有一种方法可以创建以我想要的方式格式化的文件.

我基本上使用这段代码:

string[] lines = { "Line1", "Line2" };
File.WriteAllLines(myOutputFile, lines, System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来创建没有CRLF行终止符的文件?我可以在Linux方面处理它,但宁愿从一开始就以适当的格式创建文件.

c# file-io line-endings system.io.file

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

删除XML节点集合中的空/空白元素

我有一个像这样的XML文档:

<magento_api>
    <data_item>
        <code>400</code>
        <message>Attribute weight is not applicable for product type Configurable Product</message>
    </data_item>
    <data_item>
        <code>400</code>
        <message>Resource data pre-validation error.</message>
    </data_item>
    <data_item>
        <code>1</code>
        <message></message>
    </data_item>
    <data_item>
        <code></code>
        <message>No code was given</message>
    </data_item>
</magento_api>
Run Code Online (Sandbox Code Playgroud)

我正在尝试迭代每个节点并执行以下操作:

  1. 扔掉任何空/空白的元素.
  2. 仅使用包含值的元素生成新节点.
  3. 将生成的文档发送到不同的Web服务.

我正在努力的部分是如何遍历每个节点并检查每个元素的空值.

我一直在http://rextester.com/runco​​de上测试这段代码,但似乎无法弄清楚:

Console.WriteLine("Querying tree loaded with XElement.Load");
Console.WriteLine("----");
XElement doc = XElement.Parse(@"<magento_api>
          <data_item>
            <code>400</code>
            <message>Attribute weight is not applicable for product type Configurable Product</message>
          </data_item>
          <data_item>
            <code>400</code>
            <message>Resource data pre-validation error.</message>
          </data_item>
          <data_item>
            <code>1</code>
            <message></message>
          </data_item>
          <data_item>
            <code></code>
            <message>No code …
Run Code Online (Sandbox Code Playgroud)

c# xelement linq-to-xml

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

在SQL Server中选择XML元素

我有一些XML需要使用SQL Server 2008解析.我认为我接近得到我想要的东西,但我没有正确的语法(我相信).

我有以下内容:

DECLARE @doc XML
SET @doc = '<ROOT>          
    <InvoiceDetail>
        <OrderId>1000000</OrderId>
        <OrderTypeId>2</OrderTypeId>
        <Id>2000</Id>
        <InvoiceItems>
            <InvoiceItem>
                <LineId>1</LineId>
                <Cd>123456</Cd>
                <Description>Item 1</Description>
                <Quantity>1</Quantity>
                <UnitPrice>99.990000</UnitPrice>
            </InvoiceItem>
            <InvoiceItem>
                <LineId>2</LineId>
                <Cd>234567</Cd>
                <Description>Item 2</Description>
                <Quantity>1</Quantity>
                <UnitPrice>89.990000</UnitPrice>
            </InvoiceItem>
        </InvoiceItems>
    </InvoiceDetail>
    <InvoiceDetail>
        <OrderId>1200000</OrderId>
        <OrderTypeId>1</OrderTypeId>
        <Id>3000</Id>
        <InvoiceItems>
            <InvoiceItem>
                <LineId>1</LineId>
                <Cd>234567</Cd>
                <Description>Item 2</Description>
                <Quantity>1</Quantity>
                <UnitPrice>89.990000</UnitPrice>
            </InvoiceItem>
            <InvoiceItem>
                <LineId>2</LineId>
                <Cd>345678</Cd>
                <Description>Item 3</Description>
                <Quantity>1</Quantity>
                <UnitPrice>79.990000</UnitPrice>
            </InvoiceItem>
        </InvoiceItems>
    </InvoiceDetail>
</ROOT>'

SELECT 
      Invoices.Node.value('@OrderId', 'VARCHAR(10)') 'OrderID'
    , Invoices.Node.value('@Id', 'INT') 'InvoiceId'
    , Items.Cd.value('.', 'VARCHAR(14)') 'ItemId'
FROM 
    @doc.nodes('//InvoiceDetail') Invoices(Node)
    CROSS APPLY Invoices.Node.nodes('./InvoiceItems/InvoiceItem/Cd') Items(Cd)
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

NULL    NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server xpath xquery

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

使用空数组反序列化JSON对象

当有一个空/ null属性(使用JSON.NET)时,我在反序列化JSON对象时遇到了一些麻烦,并希望有人可以指出我正确的方向.下面是我正在尝试的代码片段,并在dotnetfiddle进行测试

这是JSON的示例:

{
    "`LCA0009": [],
    "`LCA0001": {
        "23225007190002": "1",
        "23249206670003": "1",
        "01365100070018": "5"
    },
    "`LCA0003": {
        "23331406670018": "1",
        "24942506670004": "1"
    },
    "`LCA0005": {
        "01365100070018": "19"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此代码:

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {

        string json = "{\"`LCA0009\": [], \"`LCA0001\": {\"23225007190002\": \"1\",\"23249206670003\": \"1\",\"01365100070018\": \"5\"},\"`LCA0003\": {\"23331406670018\": \"1\",\"24942506670004\": \"1\"},\"`LCA0005\": {\"01365100070018\": \"19\"}}";
        Console.WriteLine(json);
        Console.WriteLine();

        Console.WriteLine("This works");
        var root = JsonConvert.DeserializeObject(json);
        Console.WriteLine(root);

        Console.WriteLine("This doesn't work");
        var root2 = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, int>>>(json);
        Console.WriteLine(root2); …
Run Code Online (Sandbox Code Playgroud)

c# json json.net json-deserialization

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

除了ScriptMain.cs之外,在另一个类中使用SSIS Variable

我在SSIS中有一个C#脚本任务,我可以传递一个变量没问题.我在脚本中创建了另一个类,调用otherclass.cs.如何在otherclass.cs中使用变量?

我试着这样做:

_urlBase = Dts.Variables["User::URLBase"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

The name 'Dts' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)

我对C#和类很陌生,所以我可能没有正确地提出这个问题.我甚至可能要问什么?

谢谢.


这是我试图完成的解决方案:

在ScriptMain.cs中创建了这样的新服务:

OtherService ws = new OtherService(Dts.Variables["User::URLBase"].Value.ToString());
Run Code Online (Sandbox Code Playgroud)

在OtherService.cs我有这个:

class OtherService
{
    public OtherService(string urlBase)
    {
        _urlBase = urlBase;
        //do other stuff
    }
    //other methods and stuff
}
Run Code Online (Sandbox Code Playgroud)

c# ssis

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

从Table1中查找值,其中Table2的值在Table1中的行之间

假设以下结构:

物品:

ItemId  Price
----------------
1000    129.95
2000    49.95
3000    159.95
4000    12.95
Run Code Online (Sandbox Code Playgroud)

门槛:

PriceThreshold  Reserve
------------------------
19.95           10
100             5
150             1

-- PriceThreshold is the minimum price for that threshold/level
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL Server 2008根据商品价格在"PriceThreshold"之间的位置返回"预留".

例:

ItemId  Reserve
1000    5
2000    10
3000    1
Run Code Online (Sandbox Code Playgroud)

- ItemId 4000的价格不高于最低价格阈值,因此应从结果中排除.

理想情况下,我希望能够使用一些直接的T-SQL,但是如果我需要创建一个存储过程来创建临时表来存储可能没问题的值.

链接到SQL Fiddle for schema

现在已经很晚了,我认为我的大脑关闭了,所以任何帮助都会受到赞赏.

谢谢.

sql sql-server sql-server-2008

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

在bash中传递给函数的变量的名称

在bash中有没有办法理解传递给它的变量的名称?

例:

var1=file1.txt
err_var=errorfile.txt

function func1 {
   echo "func1: name of the variable is: " $1
   echo "func1: value of variable is: " $1 
   echo
   if [ ! -e $var1 ]
   then
      $1 = $err_val  #is this even possible?
   fi
   func2 $1
}

function func2 {
   echo "func2: name of the variable is: " $1
   echo "func2: value of variable is: " $1 
   echo
}

func1 $var1
func1 $err_var
Run Code Online (Sandbox Code Playgroud)

如果file1.txt存在,我希望得到以下输出:

func1: name of the variable is: var1
func1: value of …
Run Code Online (Sandbox Code Playgroud)

linux bash

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

C#中OAuth随机数的线程安全随机数/字符串生成器

我一直在使用中发现的OAuthBase类这里我SSIS 2008 C#脚本组件(.NET 3.5).

它一直运行良好,但最近我遇到了问题,如果我在同一个数据流任务中执行多个脚本组件,使用上面的OAuthBase类中的GenerateNonce方法,我最终得到相同的随机数(随机数).

以下是生成nonce的OAuthBase类的摘录:

using System;
using System.Security.Cryptography;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace OAuth {
 public class OAuthBase {

    ....snip......

    protected Random random = new Random();

    public virtual string GenerateNonce() {
        // Just a simple implementation of a random number between 123400 and 9999999
        return random.Next(123400, 9999999).ToString();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在每个脚本组件中,我使用此C#代码来启动类并生成一个nonce:

        OAuthBase oAuth = new OAuthBase();
        string nonce = oAuth.GenerateNonce();
Run Code Online (Sandbox Code Playgroud)

从我的搜索周围,我认为这与它不是线程安全有关?我不完全确定.

我只能在SSIS 2008中运行.NET 3.5,所以我知道在.NET 4.0中引入的一些我不能使用的新东西.

关于如何修改OAuthBase类和/或我的C#脚本组件代码的任何想法?

c# ssis script-component .net-3.5

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

在Regex.Replace中删除不在字符串变量中的字符作为模式

我有以下字符串变量,我想将其用作Regex.Replace中有效字符模式的一部分:

string unreservedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
string input = "gzaHQ6PKUgQjXP+/dajkl==";
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的(希望是一个班轮)来替换input不存在的字符unreservedChars

c# regex

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

将DataTable转换为嵌套的JSON输出

我有一个SQL Server源表定义为:

 sku    store  qty
 20000  100    3
 20000  132    1
 20000  320    0
 30000  243    2
 30000  210    1
 10000  410    5
Run Code Online (Sandbox Code Playgroud)

我需要输出为:

{
  "skus": {
    "20000": {
      "100": 3,
      "132": 1,
      "320": 0
    },
    "30000": {
      "243": "2",
      "410": "1"
    },
    "10000": {
      "410": "5"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我将源SQL Server表导入DataSet,然后使用JSON.NET来解析结果.我在想我应该创建某种类型的结构,其中sku有一个store/qty键/值对的列表,但我不完全确定这是否是正确的轨道.

.net sql-server json json.net

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