1

了解しました。これが取引です。2つのデータベースからデータを取得し、それを別のデータベースに配置するデータ変換を行っています。連絡先のリストを追加してから、通信レコードのリストを追加します。プロセスを簡素化するために、連絡先の世帯の住所を使用して、すべての通信レコードの小さな配列を作成しました。ラムダ式を使用して配列からメールアドレスを並べ替えようとしていますが、問題が発生しています。これまでのコードは次のとおりです。

            DataRow[] Comms = dtComms.Select("household_id = " + previousID);

            if (Comms.Where(x => x.Field<string>("communication_type") == "Home Phone").Count() > 0)
            {
                string HomePhone = rNDigits.Replace(Comms[0].Field<string>("communication_value").ToString().Trim(), "");
                if (HomePhone.Length > 6)
                    oAddress._Phone = HomePhone;
            }
            if (Comms.Where(x => x.Field<string>("communication_type") == "Email").Count() > 0)
            {
                string FamilyEmail = rNDigits.Replace(Comms[0].Field<string>("communication_value").ToString().Trim(), "");
                if (FamilyEmail.Contains('@') && FamilyEmail.Contains('.'))
                    oAddress._FamilyEmail = FamilyEmail;
            }

問題は、明らかに、これは常に配列の最初の値を返すことですが、これは必ずしも私が望む値ではない可能性があります。電子メールを含むエントリに一致する配列から値のみを選択するようにコードを変更するにはどうすればよいですか?または、配列内の値を検索するためのより良い方法はありますか?

4

1 に答える 1

2

この場合、単純なforループまたはforeachループを使用することをお勧めします。LINQはデータを変更できず、選択するだけです。

于 2012-09-17T19:03:57.603 に答える