我正在尝试以一种有效的方式编写代码并实现以下目标:
抱歉,我下面的代码与我上面的代码不正确。我需要有关以下方面的指导/帮助
public class Input
{
List<string> Description { get; set;}
}
IList<Notes> notes = GetNotes (input);
decimal noteNumber = GetTotalNumber();
List<string> channel = GetChannels();
string status = GetStatus();
DateTime date = GetDate();
foreach (var item in notes)
{
if (noteNumber == item.ConditionOne)
input.Description = item.Description;
break;
if(noteNumber == item.ConditionTwo)
input.Description = item.Description
continue with next item in Foreach list of rows
}
public class Notes
{
[DataMember]
public string Description{ get; set; }
[DataMember]
public string ConditionOne{ get; set; }
[DataMember]
public string ConditionTwo{ get; set; }
[DataMember]
public string All { get; set; }
}
答案 0 :(得分:2)
从执行/结果的角度来看,我不确定以下剪裁是否有意义。
if(noteNumber == item.ConditionTwo)
input.Description = item.Description
continue with next item in Foreach list of rows
但是我使用Linq为您的问题尝试了以下解决方案。
var conditionOneDescription = notes.FirstOrDefault(n => n.ConditionOne == noteNumber);
if(conditionOneDescription!=null)
// set the description
input.Description = conditionOneDescription.Description
return;
// keep setting the input.Description if the second condition is met
notes.Where(n => n.ConditionTwo == noteNumber).ToList().ForEach(n => input.Description = n.Description);
希望这会有所帮助。
答案 1 :(得分:1)
您可以使用break
来中断循环。这里没有理由使用任何Lambda表达式。这很简单。添加正确的缩进并使用大括号将使其更容易理解。见下文。
foreach (var item in notes)
{
if (noteNumber == decimal.Parse(item.ConditionOne, NumberStyles.Currency))
{
// condition one - break out of loop
break;
}
if(noteNumber == item.ConditionTwo)
{
// condition two. add description to list
input.Description.Add(item.Description}
}
}