如何查看存储在列表中的值?

时间:2012-06-15 13:35:32

标签: c# list contains

我正在尝试学习如何在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,如果这有所作为。任何帮助将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:5)

最好的方法是覆盖课程中的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;

答案 1 :(得分:2)

要显示列表中的项目,您可以遍历列表并从中获取信息。

StringBuilder sb = new StringBuilder();

foreach (ObjectProperties op in Properties) 
{
    sb.Append(op.ObjectNumber + "\n");
}

sb.ToString(); // show this in messagebox

答案 2 :(得分:2)

取决于你想做什么。

如果您想尝试查找某些数据,请使用以下代码:

List<ObjectProperties> Properties = new List<ObjectProperties>();
var result = Properties.Where(n => n.ObjectNumber.Equals('yourVariableHere'));

答案 3 :(得分:2)

List<T>类实现IEnumerable<T>,它允许您使用一大堆非常有用的方法来查询列表。

我建议您查看List<T>IEnumerable<T>的MSDN文档。浏览可用的方法并查看示例。如果您有任何具体问题,请回到SO。

以下是您如何完成所要求的示例:

string address = myList
                 .Where(x=>x.ObjectNumber=="A123")
                 .Select(x=>x.ObjectAddress)
                 .First();

答案 4 :(得分:1)

获得列表后,可以使用foreach循环遍历它,并以这种方式输出值。

您还可以使用linq查询列表并返回所需的值。

例如:

    properties.Where(x=>x.ObjectNumber == 10).FirstOrDefault()

这将返回ObjectNumber为10的第一条记录。

如果您需要更多说明,请与我们联系。