LINQ Запрос на удаление одного столбца из списка (из) - PullRequest
1 голос
/ 29 июня 2011

У меня есть этот код:

    Dim prueba As New SvcEduardo.Service1

    Dim listaAnalisis As List(Of SvcService.Analisis)
    listaAnalisis = prueba.GetClinicoAnalisis()

    'Dim listaModificada = (From l In listaAnalisis
    '                       Select l.Colum1, l.Colum2).ToList

    DataGridView1.DataSource = listaModificada 

listaAnalisis - список, содержащий классы (Analisis), каждый из которых имеет 3 свойства.
Предполагается, что listaModificada удалит одно свойство и оставит два других, чтобы я мог связать его с DataGridView.
Могу ли я сделать это с Linq? Или строго необходимо использовать другую структуру класса (AnalisisModified), которая содержит только два свойства, которые мне нужны?
Я пытаюсь избежать этого.
Спасибо!

РЕДАКТИРОВАТЬ

'Dim listaModificada = (From l In listaAnalisis
'                       Select l.Colum1, l.Colum2).ToList

здесь я не могу выбрать столбцы, потому что listaAnalisis is a List, как я могу установить запрос, в котором один класс (Analisis)?

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Вы все еще хотите использовать AutoGenerateColumns, поэтому не устанавливайте для этого параметра значение false, поскольку это остановит генерацию всех столбцов после этого.

Вместо этого в рамках события AutoGenerateColumns для вашей таблицы данных попробуйте использовать оператор Select в заголовке столбца и использовать e.Cancel для оператора, который вы не хотите показывать.

Ex.

  Private Sub SearchResults_AutoGeneratingColumn(ByVal sender As Object, ByVal e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles SearchResults.AutoGeneratingColumn

Dim colName As String
colName = e.Column.Header
Select Case colName
  Case "_city"
    e.Column.Header = "City"
  Case "_firstName"
    e.Column.Header = "First Name"
  Case "_lastName"
    e.Column.Header = "Last Name"
  Case "_state"
    e.Column.Header = "State"
  Case "_orgCode", "_accntCode", "_state_name"
    e.Cancel = True
End Select

End Sub

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

2 голосов
/ 29 июня 2011

Вам не нужно удалять свойство из класса.Просто не отображайте столбец / свойство в вашем GridView.

Возможно, вы можете переключить свойство AutoGenerateColumns:

DataGridView.AutoGenerateColumns = False

Тогда explicity установите столбцы в DGV, которые вам действительно нужныбыть показано.Это можно сделать во время разработки или во время выполнения:

dataGridView1.Columns.Add( "CustomerName", "Name")
dataGridView1.Columns.Add( "CustomerStatus", "Current Status")
dataGridView1.Columns.Add( "CustContactPhone", "Phone")

или более гранулированный элемент управления для столбца:

Dim dvc as New DataGridViewColumn()
dvc.HeaderText = "ID"
dvc.DataPropertyName = "CustomerID"
' all the properties you need.
dataGridView1.Columns.Add(dvc)
dataGridView1.DataSource = listaModificada 
1 голос
/ 29 июня 2011

Очень простой пример

 <asp:DataGrid ID="Grid" runat="server"AutoGenerateColumns="False">
        <Columns>
            <asp:BoundColumn HeaderText="Property1" DataField="Property1"></asp:BoundColumn>
            <asp:BoundColumn HeaderText="Property2" DataField="Property2"></asp:BoundColumn>
    </asp:DataGrid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...