我列出了我称之为Actions
的内容
public class Actions
{
public string Type { get; set; }
public string Observations { get; set; }
public Actions(
string type,
string observations)
{
Type = type;
observations= type;
}
}
我稍后在像List<Actions> data= new List<Actions>();
此列表将包含鸟类的类型以及观察到的时间。这个数据来自我逐个阅读的文件。因此,在循环内部,我可能会找到Eagle, 1
,这意味着我必须在该列表中找到具有type==Eagle
并在其observations
键上添加+1的对象。
我可以迭代这个列表,然后检查它的i
对象的type
键是否具有我想要的值并增加它observations
。
有谁知道更好的方式来做我想要的事情?
答案 0 :(得分:4)
我可以迭代这个列表,然后检查它的第i个对象的类型键是否具有我想要的值并增加它的观察值。
是的,那会有用。
你这样做:
var birdToUpdate = birdList.FirstOrDefault(b => b.Type == keyToFind);
if (birdToUpdate == null)
{
birdToUpdate = new Actions(keyToFind, 0);
birdList.Add(birdToUpdate);
}
birdToUpdate.Observations++;
如果没有返回,则是该鸟的第一次观察,因此您添加它。
然后,如果你想在混音中添加颜色:
var birdToUpdate = birdList.FirstOrDefault(b => b.Type == keyToFind
&& b.Color == colorToFind);
if (birdToUpdate == null)
{
birdToUpdate = new Actions(keyToFind, colorToFind, 0);
birdList.Add(birdToUpdate);
}
birdToUpdate.Observations++;
另一种方法是将此类全部转储并引入Dictionary<string, int>
,其中键是鸟的名称,int是观察的数量。
或者,如果您坚持使用此课程,请考虑该课程的正确名称,并将其设为Dictionary<string, Actions>
。
伪:
Actions actionForBird;
if (!dictionary.TryGetValue(keyToFind, out actionForBird))
{
actionForBird = new Actions(keyToFind, 0);
dictionary[keyToFind] = actionForBird;
}
actionForBird.Observations++;
答案 1 :(得分:0)
尝试使用Dictionary
使用lambda表达式例如
\d
将用户输入放入var type = 'eagle';
Dictionary<string, int> observations = new Dictionary<string, int>();
var obj = observations.FirstOrDefault(p => p.Key == type);