C# 如何查看列表中存储的值?
我正在努力学习如何在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
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');如果你需要一份好的备忘单,那么几句话就可以教会一个人这么多。谢谢你更新你的答案,这是非常有帮助的!