Упрощение нескольких для каждой петли в LINQ - PullRequest
0 голосов
/ 20 марта 2011

в моем предыдущем вопросе мне предложили решение 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 голосов
/ 20 марта 2011

Вы можете использовать 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;
0 голосов
/ 20 марта 2011

Извините - могу читать, но не писать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...