条件が true の場合でも、結果が返されない理由がわからない LINQ クエリがあります。
メソッドに渡しTBL_CONTACTAddress contactAddress, pPeople person
ます。
私の LINQ クエリは次のようになります。
pPeople_Address recordExists = people
.Select(p => p.pPeople_Address
.Where(a => a.People_ID == person.ID
&& a.Address1 == contactAddress.LINE1)
.FirstOrDefault())
.FirstOrDefault();
最後にカーソルを合わせると、FirstOrDefault()
返されていると表示されpPeople_Address
ます。デバッグすると、 と の両方person.ID
がcontactAddress.LINE1
正しい入力を提供しています。にレコードが存在しIEnumerable<pPeople> people
ます。
ここで何か不足していますか?
EDIT1: 最初の部分 エンティティを取得します。
using (CRMEntities crm = new CRMEntities())
{
people = crm.pPeoples.Where(p => p.import_num == ImportNumber).Select(p => p).AsEnumerable().ToList();
}
2番目の部分は、情報を更新し、レコードが存在するかどうかを確認しています
private void GetAddressGeneric(TBL_CONTACT contact, pPeople person, CRMEntities crm)
{
foreach (TBL_ADDRESS contactAddress in contact.TBL_ADDRESS.Where(n => n.LINE1 != null))
{
var address = new pPeople_Address();
pPeople_Address recordExists = people.Select(p => p.pPeople_Address.FirstOrDefault(a => a.People_ID == person.ID && a.Address1 == contactAddress.LINE1)).FirstOrDefault();
}
EDIT2:以下のコードは私が望むことを達成しますが、1つのLINQステートメントでそれを実行できるようにしたいです
var recordExists = people.FirstOrDefault(p => p.pPeople_Address.Any(a =>
a.People_ID == person.ID &&
a.Address1 == contactAddress.LINE1));
pPeople_Address record = recordExists.pPeople_Address.FirstOrDefault();