使用Linq选择对象上的所有列

Isa*_*son 17 c# linq linq-to-sql

我有一个问题:

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select new { t.CommissionPercent, t.SellingPrice };
Run Code Online (Sandbox Code Playgroud)

但实际上,我需要避免使用匿名类型,因为它只是readonly并选择我的"transaction"项目上的所有属性/列.

我本以为会是这样的:

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t.SellingPrice, t.CommissionPercent, t.Etc...
Run Code Online (Sandbox Code Playgroud)

要么...

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t.SellingPrice
                        select t.CommissionPercent
                        select t.Etc...
Run Code Online (Sandbox Code Playgroud)

有没有办法检索对象对属性的所有内容并将其传递给Ienumerable?

Ste*_*ner 26

如果您想避免匿名类型并获取所有内容,为什么不返回IEnumerable原始交易项目?

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t;
Run Code Online (Sandbox Code Playgroud)


Dan*_*hew 14

另外,如果对象之间存在连接条件,我们可能会使用..

var result = (from t in db.Transactions
                      join te in db.TransactionsEntries 
                             on t.WorkorderID equals te.WorkorderID                         
             select new { t, te }).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这个,它返回了两个对象的 ToString() 方法,而不是对象的列。我认为我使用 Linq to 对象这一事实并没有什么区别? (2认同)

Chr*_*eis 8

我相信这会奏效.

var transactions = from t in db.Transactions
                        where t.SellingPrice != 0 
                        select t;
Run Code Online (Sandbox Code Playgroud)


del*_*ree 6

我想你想要的

var transactions = db.Transactions.Where(t => t.SellingPrice != 0).ToList();
Run Code Online (Sandbox Code Playgroud)

要么

var transactions = db.Transactions.Where(t => t.SellingPrice != 0).AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

如果你真的只想要一个IEnumerable