Linq объединяет типизированные данные со списком и возвращает типизированные данные - PullRequest
1 голос
/ 03 ноября 2010

У меня есть строго типизированный набор данных и список (из String).Я хочу создать запрос linq для возврата таблицы данных того же типа, где поля определенного столбца таблицы находятся в списке.Я думал о создании Join, хотя в обычном SQL я бы добавил

SELECT FROM Table WHERE Table.ID IN(...);

Это то, что я пытался в linq.

Dim Families As List(Of String)
Dim Articles As SomeStronglyTypedDataTable


Dim MatchingArticles = From a In Articles.AsEnumerable _
             Join f In Families.AsEnumerable On a.FamilyCode Equals f.ToString _
             Select New With {}

Я не уверен, если мне нужнопреобразовать результат запроса обратно в таблицу данных, если это вообще возможно.

Спасибо!

Ответы [ 4 ]

1 голос
/ 03 ноября 2010

Попробуйте более простой запрос:

    Dim MatchingArticles = From a In Articles.AsEnumerable _  
                           Where Families.Contains(a.FamilyCode)_  
                           Select a  
    Dim MyMatchingArticlesTable = CopyToDataTable(Of SomeStronglyTypedDataTable) (MatchingArticles)  
0 голосов
/ 05 сентября 2013

Я ломал голову, пытаясь заставить что-то похожее на работу, и твой код просветил меня. Все что мне нужно было добавить .AsEnumerable() с обеих сторон.

Я работаю с C #. Во всяком случае, я думаю, все, что вам нужно сделать, это выбрать свой стол как

 Dim MatchingArticles = From a In Articles.AsEnumerable _
         Join f In Families.AsEnumerable On a.FamilyCode Equals f.ToString _
         Select a;

Ну, это очень старый пост, но эй, он может помочь кому-то еще ... Если вы считаете, что это решит ваш вопрос, отметьте его как правильный, чтобы другие знали. Вы также можете пометить ответ Деварта как правильный. Я попробовал, и это работает.

0 голосов
/ 04 ноября 2010
 Dim table As DataTable = query.CopyToDataTable()
        Dim typedtable As New TypedDataset.TypedDataTable
        typedtable.Merge(table)
0 голосов
/ 03 ноября 2010

Да, вы можете сделать это. Вместо Select New ... выберите подходящие DataRows Select a, а затем используйте CopyToDataTable (Of T) в соответствующих строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...