小编Pet*_*r C的帖子

读取xml文件的多个子节点

我创建了一个带有示例内容的Xml文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<Periods>
  <PeriodGroup name="HER">
    <Period>
      <PeriodName>Prehistoric</PeriodName>
      <StartDate>-500000</StartDate>
      <EndDate>43</EndDate>
    </Period>
    <Period>
      <PeriodName>Iron Age</PeriodName>
      <StartDate>-800</StartDate>
      <EndDate>43</EndDate>
    </Period>
    <Period>
      <PeriodName>Roman</PeriodName>
      <StartDate>43</StartDate>
      <EndDate>410</EndDate>
    </Period>
  </PeriodGroup>
  <PeriodGroup name="CAFG">
    <Period>
      <PeriodName>Prehistoric</PeriodName>
      <StartDate>-500000</StartDate>
      <EndDate>43</EndDate>
    </Period>
    <Period>
      <PeriodName>Roman</PeriodName>
      <StartDate>43</StartDate>
      <EndDate>410</EndDate>
    </Period>
    <Period>
      <PeriodName>Anglo-Saxon</PeriodName>
      <StartDate>410</StartDate>
      <EndDate>800</EndDate>
    </Period>   
  </PeriodGroup>
</Periods>
Run Code Online (Sandbox Code Playgroud)

我需要能够读取所选PeriodGroup中的Period节点子节点.我想PeriodName可能是Period的一个属性,如果这更合理的话.

我看了很多例子,但似乎没有一点是正确的,似乎有几十种不同的方法,一些使用XmlReader,一些使用XmlTextReader,一些不使用.由于这是我第一次阅读Xml文件,我想我会问是否有人可以给我一个指针.我有一些工作只是为了尝试,但感觉很笨.我正在使用VS2010和c#.另外,我看到很多人都在使用LINQ-Xml,所以我很欣赏使用这种方法的优点和缺点.

string PG = "HER";
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("./Xml/XmlFile.xml"));
string text = string.Empty;
XmlNodeList xnl = doc.SelectNodes("/Periods/PeriodGroup");
foreach (XmlNode node in xnl)
{
    text = node.Attributes["name"].InnerText;
    if (text == PG)
    {
        XmlNodeList xnl2 …
Run Code Online (Sandbox Code Playgroud)

c# xml visual-studio-2010

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

存储过程,其中包含表名作为参数

我试图更新一个工作正常的存储过程,而无需使用sp_executesql.我现在想要将表名作为参数,因为我有许多具有相同结构的表,并且不希望为每个表创建新的存储过程.

我遇到的问题是这个版本似乎需要所有参数,而前一个版本接受任意数量的参数.例如,如果我删除所有WHERE参数并且只有@TableName参数,它可以正常工作.我试过寻找一个例子,但我找不到这样的东西.解析表名的所有示例都只包含该参数.

CREATE PROCEDURE cafgTenantNamesTEST2
    @TableName sysname,
    @Square nvarchar(100) = null,
    @Location nvarchar(100) = null,
    @Name nvarchar(100) = null,
    @NormalizedName nvarchar(100) = null,
    @SharedLand int = 0,
    @FieldNumber int = 0,
    @Description nvarchar(255) = null,
    @Dwelling nvarchar(100) = null
AS
BEGIN
    DECLARE @sql AS NVARCHAR(MAX)
    SET @sql = 'SELECT * FROM [' + @TableName + ']' + 
    'WHERE ([Square] LIKE ''' + @Square + ''' OR ''' + @Square + ''' IS NULL)' + 
    'AND ([Location] = ''' + @Location …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures dynamic-sql

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

在 linq 表映射中将多个表分配给单个类

当我开始掌握 Linq 时,我可能问错了问题。我已经寻找了一个解决方案,我唯一想到的是继承可能是答案,但我不知道如何在这种情况下使用它。我正在使用 C# 并为表创建了一个类:

[Table(Name = "CommonDocumentData1800")]
public class CommonDocumentRecordData
{
    [Column]
    public string RecordID;
    [Column]
    public int? StartYear;
    [Column]
    public int? EndYear;
    [Column]
    ....
}
Run Code Online (Sandbox Code Playgroud)

我有多个表(例如 CommonDocumentData1800、CommonDocumentData1900、CommonDocumentData2000),但我想使用相同的类,而不是使用不同的名称重复该类。我该如何处理这个问题?

c# sql linq linq-to-sql

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

在SQL Server存储过程中出现CASE语句问题

我刚刚开始在sql server中使用存储过程并且已经相当不错,但我现在遇到了一个我无法理解的问题.我已经找到了答案,但说实话,我不确定我是在问正确的问题.

我的sp是:

ALTER PROCEDURE [FindName]
    @Square nvarchar(100) = null,
    @Location nvarchar(100) = null,
    @Name nvarchar(100) = null,
    @NormalizedName nvarchar(100) = null,
    @SharedLand int = 0,
    @FieldNumber int = 0,
    @Description nvarchar(255) = null,
    @Dwelling nvarchar(100) = null
AS

BEGIN
    SELECT * FROM [Holdings]
    WHERE 
        ([Square] LIKE @Square OR @Square IS NULL)
        AND ([Location] = @Location OR @Location IS NULL)
        AND ([Name] LIKE @Name OR @Name IS NULL)
        AND ([NormalizedName] LIKE @NormalizedName OR @NormalizedName IS NULL)
        AND ([SharedLand] = @SharedLand …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008 sql-server-2008-r2

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