小编Ka *_*ius的帖子

当验证规则的一部分在WSDL中时,如何使用XSD验证XML

我使用C#,.NET 4.5,控制台应用程序.我在服务引用中添加了WSDL文件.内部WSDL是验证规则,如:

<xs:complexType name="xRequest">
  <xs:sequence>
    <xs:element name="SenderDateTime" type="ip:grDateTime"/>
    <xs:element name="SenderId" type="ip:grIdentifier"/>
  </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

还有XSD文件,验证规则的详细信息如下:

<xs:simpleType name="grDateTime">
    <xs:restriction base="xs:dateTime">
        <xs:pattern value="[0-9]{4,4}\-[0-9]{2,2}\-[0-9]{2,2}[T][0-9]{2,2}:[0-9]{2,2}:[0-9]{2,2}(\.[0-9]{1,6}){0,1}"/>
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

我在Reference.cs中自动生成了WSDL的属性,如:

public partial class xRequest
{
    private string senderIdField;
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
    public string SenderId {
        get {
            return this.senderIdField;
        }
        set {
            this.senderIdField = value;
            this.RaisePropertyChanged("SenderId");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将xRequest对象序列化为XML,我想验证它.当部分验证规则在WSDL中时,如何使用XSD验证XML?

.net c# xml xsd wsdl

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

如果列表中有List,如何仅使用linq选择Id

我想从另一个列表中的对象列表中仅选择id:https: //dotnetfiddle.net/Leu1AD

我只需要使用linq Select或SelectMany:

var obj = offices.Select(p => new {Id = p.Id, Employess = p.Employess}).ToList();
Run Code Online (Sandbox Code Playgroud)

目前我得到以下结果:

[
  {
    "Id":1,
    "Employess":[
      {
        "Id":1,
        "FirstName":"a",
        "LastName":"b"
      },
      {
        "Id":2,
        "FirstName":"c",
        "LastName":"d"
      }
    ]
  },
  {
    "Id":2,
    "Employess":[
      {
        "Id":3,
        "FirstName":"e",
        "LastName":"f"
      },
      {
        "Id":4,
        "FirstName":"g",
        "LastName":"h"
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

但我需要这个结果:

[
  {
    "Id":1,
    "Employess":[
      {
        "Id":1
      },
      {
        "Id":2
      }
    ]
  },
  {
    "Id":2,
    "Employess":[
      {
        "Id":3
      },
      {
        "Id":4
      }
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

你有什么想法怎么做?

c# linq

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

为什么即使使用using语句也不会调用Dispose?

我有这个控制台应用程序(.NET Framework 4.5.2):

class Program
{
    static void Main(string[] args)
    {
        using (var result = new Result())
        {
            result.Test();
        }
    }
}

public class Result : IDisposable
{
    public void Test()
    {
        int a = 1;
        int b = 1 / (a - 1);
    }

    public void Dispose()
    {
        Console.WriteLine("Dispose");
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么Dispose不调用方法?DisposeDivideByZero-exception 之后没有输入断点,并且控制台上没有输出(因为应用程序退出).

c# dispose

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

标签 统计

c# ×3

.net ×1

dispose ×1

linq ×1

wsdl ×1

xml ×1

xsd ×1