Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 如何查看列表中存储的值?_C#_List_Contains - Fatal编程技术网

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

C# 如何查看列表中存储的值?,c#,list,contains,C#,List,Contains,我正在努力学习如何在C#中使用列表。有很多教程,但没有一个真正解释如何查看包含记录的列表 这是我的密码: class ObjectProperties { public string ObjectNumber { get; set; } public string ObjectComments { get; set; } public string ObjectAddress { get; set; } } List<ObjectProperties> Pr

我正在努力学习如何在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);
类对象属性
{
公共字符串ObjectNumber{get;set;}
公共字符串ObjectComments{get;set;}
公共字符串ObjectAddress{get;set;}
}
列表属性=新列表();
ObjectProperties记录=新的ObjectProperties
{
ObjectNumber=txtObjectNumber.Text,
ObjectComments=txtComments.Text,
ObjectAddress=addressCombined,
};
属性。添加(记录);

我想在messagebox中显示这些值。现在,我只是想确保这些信息被列入清单。我还想学习如何在列表中找到一个值,并获取与之相关的其他信息,例如,我想通过对象编号查找项目,如果它在列表中,那么它将返回地址。我也在使用WPF,如果这有区别的话。任何帮助都将不胜感激。谢谢。

一旦你有了你的列表,你可以使用foreach循环遍历它,并以这种方式输出值

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

例如:

    properties.Where(x=>x.ObjectNumber == 10).FirstOrDefault()
这将返回ObjectNumber为10的第一条记录


如果您需要更多说明,请告诉我。

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

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'));
列表属性=新列表();
var result=Properties.Where(n=>n.ObjectNumber.Equals('yourVariableHere');

最好的方法是在类中重写
ToString
,并使用它加入所有记录:

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;
    }
}
我还想学习如何在列表中找到一个值,并获取与之相关的其他信息,例如,我想通过对象编号查找项目,如果它在列表中,那么它将返回地址

有几种方法可以搜索
列表
,以下是两种:

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;
String numberToFind=“1234”;
字符串addressToFind=null;
//使用List.Find方法
ObjectProperties obj=Properties.Find(p=>p.ObjectNumber==numberToFind);
//使用Enumerable.FirstOrDefault方法(使用System.Linq添加)
obj=Properties.FirstOrDefault(p=>p.ObjectNumber==numberToFind);
如果(obj!=null)
addressToFind=obj.ObjectAddress;
List
类实现了
IEnumerable
,它允许您使用大量非常有用的方法来查询列表

我建议您查看和的MSDN文档。浏览可用的方法并查看示例。如果你有任何具体的问题,请回来问

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

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

您可以使用linq查询,检查。如果ObjectNumber是唯一的,那么您可能希望将其作为一个字典(而不是列表),使用
TKey
作为保存对象编号的字符串类型。我本来会使用字典,但当“产品”出现时,用户必须能够更新对象编号被替换或更换。太棒了。我想这就是我将要尝试的,以便搜索这些值。你能解释一下我是如何从这里得到ObjectAddress属性的吗。感谢您的帮助。假设您的ObjectNumber是唯一ID,您可以执行以下操作:var objAddress=从属性中的p选择p.ProductName,其中p.ObjectNumber.Equals('YourVariable');如果你需要一份好的备忘单,那么几句话就可以教会一个人这么多。谢谢你更新你的答案,这是非常有帮助的!