У меня есть заявление LINQ. Он ищет файл XML. (См. Пример ниже). Есть определенные узлы, которые должны содержать информацию в них. (Не пустой) Оператор LINQ возвращает транзакции с пустыми узлами, поскольку они обязательны.
Пример файла 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?
Большое вам спасибо за помощь!