好的,这是交易。我正在进行数据转换,我从两个数据库中获取数据并将其放入另一个数据库。我正在添加联系人列表,然后我添加了一个通信记录列表。为了简化过程,我用联系人的家庭地址制作了一小部分所有通信记录。现在我正在尝试使用lambda表达式从数组中整理出电子邮件地址,但我遇到了问题。到目前为止的代码如下:
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;
}
问题是,显然,这总是会返回数组中的第一个值,这可能并不总是我想要的那个。如何更改代码以便仅选择与包含电子邮件的条目匹配的数组中的值?或者,有没有更好的方法来搜索数组中的值?
答案 0 :(得分:2)
我建议在这种情况下使用简单的for或foreach循环,LINQ无法修改数据只选择它。