首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为每个循环创建XName.Get

为每个循环创建XName.Get
EN

Stack Overflow用户
提问于 2011-07-14 14:00:20
回答 1查看 3.4K关注 0票数 2

我有一份LINQ声明。它搜索XML文件。(参见下面的示例)某些节点需要在其中包含信息。(非空) LINQ语句返回具有空节点的事务,因为这些节点是必需的。

XML文件示例:

代码语言:javascript
复制
<OnlineBanking>
  <Transactions>
    <Txn>
      <UserName>John Smith</UserName>
      <CustomerStreet>123 Main</CustomerStreet>
      <CustomerStreet2></CustomerStreet2>
      <CustomerCity>New York</CustomerCity>
      <CustomerState>NY</CustomerState>
      <CustomerZip>12345</CustomerZip>
    </Txn>
  </Transactions>
</OnlineBanking>

LINQ语句:

代码语言:javascript
复制
//Start LINQ statement
var transactionList =
    from transactions in root.Elements(XName.Get("Transactions")).Elements().AsEnumerable()
    where transactions.Elements().Any
       (
          el =>
          String.IsNullOrEmpty(el.Value) &&
          elementsThatCannotBeEmpty.Contains(el.Name)
       )
    select transactions;

我的问题:

我有所需的字段.(数据库表中的CustomerStreet、CustomerCity等)。下面我对所需的XName进行了硬编码。但是,我希望这是动态的,从数据库。

代码语言:javascript
复制
var elementsThatCannotBeEmpty = new HashSet<XName>
{
   XName.Get("CustomerStreet"),
   XName.Get("CustomerCity"),
   XName.Get("CustomerState"),
   XName.Get("CustomerZip")
};

下面是从数据库中检索所需字段的方法:

代码语言:javascript
复制
List<Setting> settingList = SettingsGateway.SelectBySettingType("VerifyField");
foreach (Setting SettingValue in settingList)
{
    string strSettingType = setting.SettingType;
}

如何使用数据库结果循环并动态添加XName.Get值?

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-14 14:02:38

您正在尝试检查settingList中字符串的settingList是否为空:

代码语言:javascript
复制
if (settingList.Any(
        name => String.IsNullOrEmpty(el.Element(name).Value)
    )

有一个从stringXName的隐式转换,所以您实际上不需要调用XName.Get

不过,如果你愿意,你可以写el.Element(XName.Get(name))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6694378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档