Выделите все столбцы на объекте с помощью Linq - PullRequest
14 голосов
/ 02 февраля 2012

У меня есть запрос:

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select new { t.CommissionPercent, t.SellingPrice };

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

Я бы подумал, что это будет примерно так:

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t.SellingPrice, t.CommissionPercent, t.Etc...

Или ...

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t.SellingPrice
                        select t.CommissionPercent
                        select t.Etc...

Нет ли способа извлечь все, что объект имеет для свойств, и передать его в Ienumerable?

Ответы [ 8 ]

25 голосов
/ 02 февраля 2012

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

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t;
12 голосов
/ 04 августа 2016

Кроме того, если между объектами существует условие join , мы можем получить результат, используя ..

var result = (from t in db.Transactions
                      join te in db.TransactionsEntries 
                             on t.WorkorderID equals te.WorkorderID                         
             select new { t, te }).ToList();
8 голосов
/ 02 февраля 2012

Я верю, что это сработает.

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t;
6 голосов
/ 02 февраля 2012

Я думаю, вы хотите

var transactions = db.Transactions.Where(t => t.SellingPrice != 0).ToList();

или

var transactions = db.Transactions.Where(t => t.SellingPrice != 0).AsEnumerable();

, если вы действительно хотите IEnumerable

4 голосов
/ 02 февраля 2012

1001 * попробовать *

var transactions = from t in db.Transactions
                    where t.SellingPrice != 0 
                    select t;
2 голосов
/ 02 февраля 2012

Для одного возвращаемого значения вы можете использовать:

var transactions = (from t in db.Transactions
                    where t.SellingPrice != 0 
                    select t).FirstOrDefault();  

Для IEnumerable return:

var transactions = (from t in db.Transactions
                    where t.SellingPrice != 0 
                    select t).ToList();  
2 голосов
/ 02 февраля 2012

Почему вам «нужно» избегать анонимного ввода здесь?

У вас есть следующие опции:

select t
select new { t.CommissionPercent, t.SellingPrice }; 
select new MyCustomDtoClass { CommissionPercent = t.CommissionPercent, SellingPrice  = t.SellingPrice }; //also ok
select new object[] { t.CommissionPercent, t.SellingPrice }

С последним неудобно обращаться.Обойти это невозможно.Скажите нам, что вы хотите сделать.

0 голосов
/ 15 июня 2019
var transactions = (from t in db.Transactions
                        select new
                       {
                           t.SellingPrice,
                           t.CommissionPercent,
                           ...,
                           ...,
                           t.Etc...
                       }).AsEnumerable().Select(x => new HomeModel // Create a model which have following properties
                        {
                           SellingPrice= x.SellingPrice,  //(where SellingPrice is a HomeModel property)
                           AdCategoryTitle = x.CommissionPercent,
                           ...,
                           ...,
                           ETc... = t.Etc...
                       }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...