Member 12955376 Ответов: 2

DataTable для LINQ в VB.NET


Кто-нибудь может помочь мне переписать приведенный ниже цикл foreach в Linq

Что я уже пробовал:

Sub Main()
    Dim Id As String
    Const FILE_NAME As String = "File_Name"
    Const FILE_ID As String = "File_Id"
    Id = Nothing
    Dim fileName As String = "CT_TST_123_170102"
    Dim tempFileName As String

    Dim dt As New DataTable
    dt.Columns.Add("File_Id", GetType(Integer))
    dt.Columns.Add("File_Name", GetType(String))
    dt.Rows.Add(1, "MT_FSX_*")
    dt.Rows.Add(2, "KJ_FSX_*")
    dt.Rows.Add(3, "CT_TST_*")

    'Can anyone help me rewriting the below section in linq
    '------------------------------------------------------------------------
    For Each dr As DataRow In dt.Rows
        tempFileName = Convert.ToString(dr(FILE_NAME)).Replace("*", "")
        If (fileName.Contains(tempFileName.Trim())) Then
            Id = Convert.ToString(dr(FILE_ID))
            Exit For
        End If
    Next dr
    '-------------------------------------------------------------------------
End Sub

Suvendu Shekhar Giri

Ну, а вы не пробовали сначала написать ее сами?
Лучше всего начать с некоторых базовых учебников LINQ.

Member 12955376

Если бы у меня было время, чтобы проверить его..Я не буду поднимать этот вопрос правильно

Suvendu Shekhar Giri

Нет, друг, ты не понял. Цель этого форума сообщества-помочь тем, кто уже пробовал и имеет некоторые проблемы в том, что они пробовали. Мы не сможем помочь вам написать код. Если у вас нет времени или вы хотите, чтобы ваш код был написан кем-то другим, пожалуйста, поищите онлайн-фрилансеров-разработчиков, они сейчас стоят гораздо дешевле.

[no name]

Если у вас нет времени хотя бы попытаться сделать свою работу самостоятельно, почему мы должны тратить время на то, чтобы сделать вашу работу за вас? И это не вопрос. Это просьба о том, чтобы кто-то сделал за вас вашу работу.

2 Ответов

Рейтинг:
0

Maciej Los

Начать здесь:
Руководство по программированию (LINQ to DataSet)[^]
LINQ to DataSet[^]
Примеры LINQ to DataSet[^]
Запрос наборов данных (LINQ to DataSet)[^]

Примечание:

Класс DataTable не реализует ни один из этих интерфейсов, поэтому вы должны вызвать AsEnumerable метод, если вы хотите использовать DataTable в качестве источника в предложении From запроса LINQ.


Итак, если вы хотите получить имена файлов, где имя не равно пустой строке...
Dim qry = From dr As DataRow in dt.AsEnumerable() _
    Where Not dr.Field(Of String)("FileName").Contains("*")
    Select dr


Господи, удачи!


CHill60

5 б

Maciej Los

Спасибо, Кэролайн.

Рейтинг:
0

CHill60

Любезно предоставлено Решарпером. непроверенный, и я даже не пытался его скомпилировать, но он должен помочь вам преодолеть горб...

Id = (From dr As DataRow In dt.Rows
        Let tempFileName = Convert.ToString(dr(FILE_NAME)).Replace("*", "")
        Where (fileName.Contains(tempFileName.Trim()))
        Select Convert.ToString(dr(FILE_ID))).FirstOrDefault()


Maciej Los

Кэролайн, кажется, это не сработает. Пожалуйста, посмотрите мой ответ.

CHill60

Хм-вернулся к нему, и он дал тот же результат, что и исходный код операции?

Maciej Los

Честно говоря... я не знаю, какой результат ожидаю получить.

CHill60

Вот оно что! :-)