[英]Check the list of class in main c#
該程序有2個類:
ItemUtility類:
public class ItemUtility
{
public ItemUtility(int item, int utility)
{
this.item = item;
this.utility = utility;
}
public int item { get; set; }
public int utility { get; set; }
}
TransactionTP類:
public class TransactionTP
{
protected List<ItemUtility> itemsUtilities { get; set; }
protected int transactionUtility { get; set; }
public TransactionTP(List<ItemUtility> itemsUtilities, int transactionUtility)
{
this.itemsUtilities = itemsUtilities;
this.transactionUtility = transactionUtility;
}
}
我們定義了一個列表( List<TransactionTP> transactions
),並將值分配給此集合
使用下面的命令,我得到第一行
foreach (TransactionTP b in matrix)
{
matrix[b];
}
如何獲得第一筆交易第一行的項目和效用?
根據照片:
214 + 260 + ...
846 + 552 + ...
我嘗試了以下過程,但這是一個錯誤:
matrix[a].itemsUtilities[b]
matrix
是TransactionTP
的列表,因此當您進行foreach時,您將枚舉列表項。 這是應該起作用的方法:
foreach (TransactionTP b in matrix)
{
if(b.itemsUtilities.Count > 0)
{
// Do something with item / utility...
b.itemsUtilities[0].item
b.itemsUtilities[0].utility
}
}
如果只需要第一個事務和第一個itemUtilities,則只需使用索引器即可訪問它: matrix[0].itemsUtilities[0].item
根據照片:
214 + 260 + ...
846 + 552 + ...
我想你要遍歷嵌套列表,總結了item
首先,您需要將您的屬性public
(請參閱公共,私有,受保護和沒有訪問修飾符之間有什么區別? )
public class TransactionTP
{
public List<ItemUtility> itemsUtilities { get; set; }
public int transactionUtility { get; set; }
public TransactionTP(List<ItemUtility> itemsUtilities, int transactionUtility)
{
this.itemsUtilities = itemsUtilities;
this.transactionUtility = transactionUtility;
}
}
然后,您可以執行以下操作:
foreach (TransactionTP b in matrix)
{
int itemCount = 0;
//remember to null check to be defensive
if (b.itemsUtilities != null)
{
foreach(ItemUtility c in b.itemsUtilities)
{
itemCount += c.item;
}
}
//presuming this is an console app?
Console.Write(itemCount);
}
您也可以使用LINQ執行此操作:
foreach (TransactionTP b in matrix)
{
int itemCount = 0;
//remember to null check to be defensive
if (b.itemsUtilities != null)
{
itemCount = b.itemsUtilities.Sum(s => s.item);
}
//presuming this is an console app?
Console.Write(itemCount);
}
請參考本教程,了解foreach的工作原理: https : //www.dotnetperls.com/foreach
基本上,一個foreach遍歷一個項目列表,在您的示例中, b
, b
是該項目及其matrix
的項目列表。
因此,如果您將代碼更改為
foreach(var b in matrix)
{
Console.WriteLine(b.transactionUtility);
}
然后,您可以看到每個b.transactionUtility
是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.