我有一个区域对象列表,如何找到对象值?
List<object> _area = new List<object>();
_area.Add(new { area_pid = _area_pid, info = _area_name });
如果未找到area_pid,我需要在列表中找到它,然后添加一个新对象。
答案 0 :(得分:5)
如果您不必为您所在的区域创建完整的类(我不明白为什么不这样做,它似乎只是几个属性,可能是三行代码),则可以使用ValueTuple < / p>
List<(int area_pid, string area_name)> areas = new List<(int, string)>();
areas.Add((3,"New York"));
areas.Add((4,"New Jersey"));
areas.Add((5,"Chicago"));
//find example
var newAreas = areas.Where(a => a.area_name.StartsWith("New"));
我个人不喜欢创建专用的存储类,但是您可能会对它感兴趣。
是一个c#7 / .net 4.7构造查看更多信息:
https://blogs.msdn.microsoft.com/mazhou/2017/05/26/c-7-series-part-1-value-tuples/
答案 1 :(得分:4)
给出
public class Something
{
public Something(string area, string name)
{
Area = area;
Name = name;
}
public string Area { get; set; }
public string Name { get; set; }
}
用法
那么您可以简单地使用Where
语句
var somethings = new List<Something>();
somethings.Add(new Something("sad", "bobo"));
var results = somethings.Where(x => x.Area == "asd");
或者,如果您假设只有一个SingleOrDefault
或FirstOrDefault
var result = somethings.SingleOrDefault(x => x.Area == "asd");
答案 2 :(得分:0)
您可以使用
foreach(Object item in _area) {
System.Reflection.PropertyInfo pi = item.GetType().GetProperty("name");
String yourValue = (String)(pi.GetValue(item, null));
}
但是,我建议您存储一个模型(类)。
答案 3 :(得分:0)
另一种选择是使用ToList()方法定义_area。
var _area = new []{new { area_pid = _area_pid, info = _area_name}}.ToList();
_area.Add(new { area_pid = _area_pid2, info = _area_name2 });
现在您可以使用
_area.Where(x=>x.area_pid==1);
更新:基于谜团的评论
var _area = new []{new { area_pid = default(int), info = default(string)}}.Take(0).ToList();
_area.Add(new { area_pid = _area_pid2, info = _area_name2 });