我有一个显示联系人的列表视图-name
并且number
是列。我有另一个显示消息的列表视图- phone number
(从接收消息的位置),message
作为列。现在,当我填充我的消息列表视图时,我想将电话号码列与联系人列表号码列进行比较,然后如果匹配,则将消息列表视图的号码列替换为联系人姓名。
这可能吗?请提供解决方案。
看看这是否可以帮助您:
if (messagelist.Items.Count > 0)
{
for (int i = 0; i < messagelist.Items.Count; i++)
{
string mnum = messagelist.Items[i].Text;
for (int j = 0; j < contactlist.Items.Count; j++)
{
if (contactlist.Items[j].SubItems[1].Text == mnum)
{
messagelist.Items[i].Text = contactlist.Items[j].Text;
}
}
}
}
我假设联系人列表的第二列中有数字。
我首先join
要两个lists
号码/电话号码:
var matchingList = (from c in ContactList
join m in MessageList on c.Number equals m.PhoneNumber
select new {ContactName = c.Name
, ContactNumber = c.Number
, Message = m.Message
, PhoneNumber = m.PhoneNumber } );
现在你有一个list
匹配的Contact.Number
and Message.PhoneNumber
。
现在您可以遍历这些项目并设置Name
:
MessageList.Foreach( x =>
{
var matchedItem = matchingList.FirstOrDefault( y => y.Massage == x.Message && y.PhoneNumber == x.PhoneNumber);
if(matchedItem != null)
{
x.PhoneNumber = matchedItem.Name
}
});
注意:未经测试。只是一些工作。
希望这可以帮助。