简化LINQ中每个循环的倍数

时间:2011-03-20 09:00:41

标签: vb.net linq foreach loops

在我的上一个问题中,我建议使用LINQ解决方案。它非常简单。我尝试用类似的方法解决下一个类似但有点差异的问题,但我失败了。

如何更好地制作以下代码

    For Each Item As ListViewItem In RoomsListView.Items
        For Each Item1 As Room In myBookedRooms
            If Item1.UIN = Item.SubItems(1).Text Then
                Item.Checked = True
            End If
        Next
    Next

2 个答案:

答案 0 :(得分:0)

抱歉 - 可以阅读但不能写VB ......

在C#Linq中,您的查询类似于:

var query = from room in RoomsListView.Items
    from bookedRoom in myBookedRooms 
    where ((Room)bookedRoom).UIN == room.SubItems(1).Text
    select room;

foreach (var room in query)
{
    room.Checked = true;
}

答案 1 :(得分:0)

您可以使用Join。这是一个C#样本:

var itemsToUpdate = RoomsListView.Items
                        .Cast<ListViewItem>()
                        .Join(myBookedRooms,
                                   Item => Item.SubItems(1).Text,
                                   Item1 => Item1.UIN,
                                   (Item, Item1) => Item);

foreach (var item in itemsToUpdate)
    item.Checked = true;