Обновление списка с помощью linq вместо каждого - PullRequest
6 голосов
/ 09 марта 2012

Я немного новичок в linq, я только использую linq для фильтрации данных. Теперь я хочу написать запрос для следующего:

For Each k As String In con.Numbers.Keys
      con.Numbers(k).Primary = False
Next

Con.Numbers - это словарь, но теперь я преобразовал его в список, поэтому приведенный выше код не будет работать со списком. Не могли бы вы сказать, как мне этого добиться с помощью Linq - Con.NUmbers - это список. Спасибо.

Дополнительная информация: Структура класса:

Public Class ContactCon
        Property ConId As String
        Property ConRowID As String
        Property Title As String
        Property Mob1 As String
        Property Mob2 As String
        Property Land1 As String
        Property Land2 As String
        Property Email1 As String
        Property Email2 As String
        Property Fax1 As String
        Property Fax2 As String
        Property Primary As Boolean
        Public Sub New()
            ConId = ""
            ConRowID = ""
            Title = "Contact1"
            Mob1 = ""
            Mob2 = ""
            Land1 = ""
            Land2 = ""
            Email1 = ""
            Email2 = ""
            Fax1 = ""
            Fax2 = ""
            Primary = False
        End Sub
End Class

Ответы [ 2 ]

16 голосов
/ 09 марта 2012

Не знаю, неправильно ли я вас где-то понял.

Не уверен, почему вы хотите использовать LINQ специально. Это совершенно ясно:

For Each number as ContactCon In con.Numbers
    number.Primary = False
Next

Если по какой-то причине вам нужен LINQ-подобный синтаксис, вы можете использовать List(T).ForEach:

con.Numbers.ForEach(Sub(n) n.Primary = False)

Конечно, это не «настоящий» LINQ, но, опять же, я не уверен, почему это важно.

Если вы действительно (?) Вынуждены использовать LINQ, вы можете сделать:

con.Numbers.Select(Sub(n) n.Primary = False).ToList()

Но, конечно, код бессмыслица. Не делайте этого - придерживайтесь того, что ясно и очевидно, что в данном случае означает просто циклический просмотр списка.

EDIT

Исправлено ужасное неправильное использование Function

1 голос
/ 09 марта 2012

LINQ расшифровывается как Language Integrated Query. Запрос означает получение данных, поэтому он не так хорош для обновления данных. Возможно, вы сможете использовать его для получения другой копии обновленных данных, но не для непосредственного обновления оригинала.

Если вы хотите создать новый список с обновленными данными, вы можете сделать что-то вроде этого:

Dim NewList = con.Numbers.Select(Function(e) New MyObject() With {.Key = e.Key, .Primary = False}).ToArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...