【发布时间】:2011-07-14 17:23:59
【问题描述】:
我要返回一个列表。这是包含在我的 XML 文件中不能为空的 xml 节点的名称。
List<Setting> settingList = SettingsGateway.GetBySettingTypeList("VerifyField");
我有一个 LINQ 语句。我正在尝试返回所有具有空节点的事务。此处的列表返回不能为空的节点。有谁知道我在这里做错了什么?
以下代码应该将“事务”绑定到 DataGrid 并显示具有所需空节点的 Txn。
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)
settingList.Any(
name => String.IsNullOrEmpty(el.Element(name.SettingValue).Value)
)
)
select new
{
CustomerName = transactions.Element(XName.Get("CustomerName")).Value,
ConfirmationNumber = transactions.Element(XName.Get("ConfirmationNumber")).Value
};
GridView.DataSource = transactionList;
GridView.DataBind();
XML 文件示例:
<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>
【问题讨论】:
-
不清楚为什么您不在内部 lambda 表达式中使用
name。Setting长什么样子? -
“不能为空”是什么意思?
-
在XML中,节点
不能为空。 -
啊,好吧,有了那个编辑,它就更有意义了……
-
设置有
SettingID、SettingType、Settingvalue。我返回所有设置类型为“VerifyField”的行,它们是CustomerStreet、CustomerCity、CustomerState、CustomerZip