Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在System.Collections.Generic.List`1[CardDistro.Models.Transaction]上循环_C#_Linq - Fatal编程技术网

C# 如何在System.Collections.Generic.List`1[CardDistro.Models.Transaction]上循环

C# 如何在System.Collections.Generic.List`1[CardDistro.Models.Transaction]上循环,c#,linq,C#,Linq,在这个问题上,我无法从谷歌搜索中得到明确的方向。我有一个名为transaction的表,我想根据BatchID对外键进行分组,并根据降序进行排序 表格定义 [TTransactionID] INT IDENTITY (1, 1) NOT NULL, [BatchID] INT NULL, [CardID] INT NULL, [UserID] INT

在这个问题上,我无法从谷歌搜索中得到明确的方向。我有一个名为
transaction
的表,我想根据
BatchID
对外键进行分组,并根据
降序进行排序

表格定义

[TTransactionID]      INT          IDENTITY (1, 1) NOT NULL,
[BatchID]             INT          NULL,
[CardID]              INT          NULL,
[UserID]              INT          NULL,
[TransactionDateTime] DATETIME     NOT NULL,
[TransactionStatus]   VARCHAR (11) NOT NULL,
CONSTRAINT [PK_Transactions] PRIMARY KEY CLUSTERED ([TTransactionID] ASC),
CONSTRAINT [FK_Transactions_Cards] FOREIGN KEY ([CardID]) REFERENCES [dbo].[Cards] ([CardID]),
CONSTRAINT [FK_Transactions_Users] FOREIGN KEY ([UserID]) REFERENCES [dbo].[Users] ([UserID]) NOT FOR REPLICATION
这是我第五次尝试的代码

当我运行上面的代码时。我在浏览器上收到以下消息。我被困在这里,这之后我不知道该怎么办

System.Collections.Generic.List`1[SECardDistribution.Models.Transaction]
请告知
谢谢

因为要在LINQ查询中对结果进行分组,所以需要运行两个循环—一个用于组,另一个用于组中的数据

var TransactionList = db.Transactions
                                .GroupBy(x => new { x.BatchID })
                                .Select(x => x.ToList()).ToList();

foreach (var group in TransactionList)
{
   foreach(var item in group) 
   {
       // DO YOUR THINGS HERE...
   }
}

实际上,您可以使用
SelectMany

var transactionList = db.Transactions.GroupBy(x => new { x.BatchID }).SelectMany(x => x).ToList();

请注意,TransactionList按BatchId升序排序,然后按CardId降序排序

var TransactionList = context.Trx
                .GroupBy(t => t.BatchId)    //group by BatchId
                .OrderBy(t => t.Key)        //order by BatchId
                .Select
                (g =>
                    //Create a new "Batch Group" anonymously where each batch contains the associated transactions
                    new
                    {
                        BatchId = g.Key,
                        BatchTransactions = g.Select(trx => new { Card = trx.Card, User = trx.User }).OrderByDescending(batchTrx => batchTrx.Card.CardId),    //order by CardId
                    }
                );
要在排序列表中循环,可以使用嵌套的foreach循环,如下所示:

//Loop through the batch group in the sorted list
            foreach(var batchGroup in TransactionList)
            {
                foreach(var batchTrx in batchGroup.BatchTransactions)
                {
                    //You may access the properties of batchTrx like a normal object graph, example batchTrx.Card.CardId
                }
            }
foreach(TransactionList中的var组){foreach(group中的var项){..
foreach(TransactionList中的var项。SelectMany(g=>g)){..
var TransactionList = context.Trx
                .GroupBy(t => t.BatchId)    //group by BatchId
                .OrderBy(t => t.Key)        //order by BatchId
                .Select
                (g =>
                    //Create a new "Batch Group" anonymously where each batch contains the associated transactions
                    new
                    {
                        BatchId = g.Key,
                        BatchTransactions = g.Select(trx => new { Card = trx.Card, User = trx.User }).OrderByDescending(batchTrx => batchTrx.Card.CardId),    //order by CardId
                    }
                );
//Loop through the batch group in the sorted list
            foreach(var batchGroup in TransactionList)
            {
                foreach(var batchTrx in batchGroup.BatchTransactions)
                {
                    //You may access the properties of batchTrx like a normal object graph, example batchTrx.Card.CardId
                }
            }