私は次のようにLINQクエリはデータテーブルから少なくとも1つの行を引っ張るように書かれている:DataTableへのLINQのDefaultIfEmpty?
var generalQuery =
from contact in contacts.AsEnumerable().DefaultIfEmpty()
where contact.Field<String>("CONTACT_TYPE").ToUpper() == "AGENT"
select new
{
AgentName = contact.Field<String>("FIRST_NAME") + " " +
contact.Field<String>("LAST_NAME"),
AgentPhoneNumber = contact.Field<String>("PHONE"),
AgentEmailAddress = contact.Field<String>("EMAIL")
};
I次いでLINQ問合せ出力の値を持つクラスの新しいインスタンスのプロパティを設定しようとします。
var genInfo = new GeneralInformationType
{
AgentName = generalQuery.FirstOrDefault().AgentName,
AgentPhoneNumber = generalQuery.FirstOrDefault().AgentPhoneNumber,
AgentEmailAddress = generalQuery.FirstOrDefault().AgentEmailAddress
};
問題は、クエリに結果がないことがあります。これは、GeneralInformationTypeのさまざまな文字列の値をnullに設定して例外を発生させようとします。私はDefaultIfEmptyのさまざまなメソッドを試しましたが、どこに置くべきか分かりません。
ご協力いただければ幸いです。
おかげで、 ロブ
両方の答えが正しいようです。私はこれが私が使用した手法であり、中間の "結果"オブジェクトを必要としないので、Jonの上でこれを選択しました。あなたのすべての協力に感謝します! – SpaceCowboy74