我有一个列表视图,显示联系人 - name
和number
是列。我有另一个列表视图,显示消息 - phone number
(收到消息的地方),message
是列。现在,当我填充我的消息列表视图时,我想将电话号码列与联系人列表号列进行比较,然后如果匹配则将消息列表视图的号码列替换为联系人姓名。
这可能吗?请提供解决方案。
答案 0 :(得分:1)
看看这是否可以帮到你:
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;
}
}
}
}
我认为联系人列表的第2栏中有编号。
答案 1 :(得分:0)
我首先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
和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
}
});
注意:未经测试。只是可以解决的问题。
希望这有帮助。