2
私はLINQステートメントを持っています。 XMLファイルを検索します。 (下記の例を参照してください)情報が必要な特定のノードがあります。 (空ではない)LINQ文は、ノードが空であるトランザクションを返します。これは、これらが必要なためです。各ループのXName.Getの作成
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>
LINQ文:
//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をハードコードしています。しかし、私はこれをデータベースから動的にしたい。ここで
var elementsThatCannotBeEmpty = new HashSet<XName>
{
XName.Get("CustomerStreet"),
XName.Get("CustomerCity"),
XName.Get("CustomerState"),
XName.Get("CustomerZip")
};
は、私は、データベースから必要なフィールドを取得しています方法です:
List<Setting> settingList = SettingsGateway.SelectBySettingType("VerifyField");
foreach (Setting SettingValue in settingList)
{
string strSettingType = setting.SettingType;
}
は、どのように私は、データベースの結果ループを取り、動的XName.Get値を追加するには?
ありがとうございました!
あなたがsettingList
内の文字列の
Any()
が空であるかどうかを確認しようとしている
私は現在のLINQステートメントでこれをどこに追加しますか?私はあなたが提供したコードをどのように受け取り、それを私の中に入れるのか混乱しています...ありがとう。 – Turp
おそらくあなたの 'where'節にあります。ここ – SLaks
は私のwhere句ですが、私はエラーを取得:。 'transactions.Elements()どれ ( エル=> settingList.Any(名=> String.IsNullOrEmpty(el.Element(名).Valueの)) ) ' エラー\tための最良のオーバーロードされたメソッドの試合 'System.Xml.Linq.XContainer.Element(System.Xml.Linq.XName)' は、いくつかの無効な引数 – Turp