Выбрать в коллекции - C#

Скажем, у меня есть запрос sql

SELECT fname, lname, dob, ssn, address1, address2, zip, phone,state from users

Теперь предположим, что записи находятся либо в словарной базе, либо в строго типизированной коллекции.

У меня есть элемент управления представлением сетки, и я хочу привязать его к своей коллекции, но я хочу отображать только fname, lname, dob и ssn, а не другие столбцы.

Есть ли простой способ извлечь столбцы, а затем привязать их к извлеченному элементу? Не уверен, что LINQ будет здесь полезен.

Это тестовый проект, так как я знакомлюсь с веб-миром с VS-2008.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 885
5

Ответы 5

Возможно, вам помогут LINQ и анонимный класс.

from user in UserCollection
select new { FirstName=user.fname, LastName=user.lname, Dob=user.dob, SSN=user.ssn }

Вы можете использовать linq для возврата анонимного типа (также известного как кортеж). Этот кортеж будет содержать только те свойства, которые вы ищете. Затем вы можете привязать свою сетку к этой коллекции. Google анонимные типы или кортежи на C#, чтобы понять, что я имею в виду.

Предполагая, что ваши данные находятся в некоторой форме IENumerable <T>:

var filteredUser = from U in Users
    select new { U.fname, U.lname, U.dob, U.SSN };

FilteredUser теперь представляет собой коллекцию только с этими свойствами.

Это одна из замечательных особенностей LINQ To Objects. Вам не нужно использовать LINQ-To-SQL для получения данных, вы можете использовать все, что хотите, чтобы заполнить свой первоначальный вопрос, а затем использовать Linq-To-Objects, чтобы сократить его в памяти.

Джонатан: с filterUser я могу сделать что-то вроде этого foreach (Users usr in filterUser) {user.fname // да, это ничего не делает, кроме как просто посмотреть, могу ли я использовать его таким образом}

Mat 14.11.2008 04:56

Вы можете указать, какие столбцы вы хотите отображать в сетке. Просто укажите нужные столбцы на странице aspx:

<asp:GridView ID = "gvwExample" runat = "server" AutoGenerateColumns = "False" >
<columns>
<asp:BoundField DataField = "firstname" HeaderText = "First Name" />
<asp:BoundField DataField = "lastname" HeaderText = "Last Name" />
<asp:BoundField DataField = "hiredate" HeaderText = "Date Hired" />
</columns>
</asp:GridView> 

это я знаю, просто интересно, было ли что-нибудь необычное с VS-2008 и новым фреймворком

Mat 14.11.2008 01:53

Вы можете использовать linq для того, что вам нужно. Если вы создали dbml для своих данных, вы можете просто использовать LINQ для извлечения записей прямо из db (или если ваша коллекция IEnumerable), например:

Dim _records = From user in users _
               Select New With {.FirstName = user.fname,_
               .Lastname = user.lname,.dob = user.dob,.ssn = user.ssn}

{gridcontrol}.datasource = _records

Другие вопросы по теме