如何查看存储在列表中的值
本文关键字:列表 何查看 存储 | 更新日期: 2023-09-27 18:37:14
我正在尝试学习如何在 C# 中使用列表。那里有很多教程,但没有一个真正解释如何查看包含记录的列表。
这是我的代码:
class ObjectProperties
{
public string ObjectNumber { get; set; }
public string ObjectComments { get; set; }
public string ObjectAddress { get; set; }
}
List<ObjectProperties> Properties = new List<ObjectProperties>();
ObjectProperties record = new ObjectProperties
{
ObjectNumber = txtObjectNumber.Text,
ObjectComments = txtComments.Text,
ObjectAddress = addressCombined,
};
Properties.Add(record);
我想在消息框中显示值。现在我只是确保信息进入列表。我还想学习如何在列表中查找值并获取与之相关的其他信息,例如,我想通过对象编号查找项目,如果它在列表中,那么它将返回地址。我也在使用 WPF,如果这有所作为的话。任何帮助将不胜感激。谢谢。
最好的方法是覆盖类中的ToString
并使用string.Join
加入所有记录:
var recordsAsString = string.Join(Environment.NewLine,
Properties.Select(p => p.ToString()));
MessagBox.Show(recordsAsString);
以下是ToString
的可能实现:
class ObjectProperties
{
public string ObjectNumber { get; set; }
public string ObjectComments { get; set; }
public string ObjectAddress { get; set; }
public override string ToString()
{
return "ObjectNumber: "
+ ObjectNumber
+ " ObjectComments: "
+ ObjectComments
+ " ObjectAddress: "
+ ObjectAddress;
}
}
我还想学习如何在列表中查找值并获取与之相关的其他信息,例如,我想通过对象编号查找项目,如果它在列表中,那么它将返回地址。
有几种方法可以搜索List<T>
,这里有两种:
String numberToFind = "1234";
String addressToFind = null;
// using List<T>.Find method
ObjectProperties obj = Properties.Find(p => p.ObjectNumber == numberToFind);
//using Enumerable.FirstOrDefault method (add using System.Linq)
obj = Properties.FirstOrDefault(p => p.ObjectNumber == numberToFind);
if (obj != null)
addressToFind = obj.ObjectAddress;
若要显示列表中的项,可以循环访问列表并从中获取信息。
StringBuilder sb = new StringBuilder();
foreach (ObjectProperties op in Properties)
{
sb.Append(op.ObjectNumber + "'n");
}
sb.ToString(); // show this in messagebox
取决于你想做什么。
如果要尝试查找一些数据,请使用以下代码:
List<ObjectProperties> Properties = new List<ObjectProperties>();
var result = Properties.Where(n => n.ObjectNumber.Equals('yourVariableHere'));
List<T>
类实现了IEnumerable<T>
,这允许您使用一大堆非常有用的方法来查询列表。
我建议查看 MSDN 文档的 List<T>
和 IEnumerable<T>
。浏览可用方法并查看示例。如果您有任何具体问题,请回到SO。
以下是完成您作为示例要求的内容的方法:
string address = myList
.Where(x=>x.ObjectNumber=="A123")
.Select(x=>x.ObjectAddress)
.First();
获得列表后,您可以使用foreach循环遍历它并以这种方式输出值。
还可以使用 linq 查询列表并返回所需的值。
例如:
properties.Where(x=>x.ObjectNumber == 10).FirstOrDefault()
这将返回 ObjectNumber 为 10 的第一条记录。
如果您需要更多说明,请告诉我。