检查foreach循环列表结果C#

时间:2014-10-28 08:57:28

标签: c# list foreach

我在课堂上有这段代码:

public class TicketSummary
    {

        //get all the development tickets
        public List<IncidentSummary> AllDevelopmentTickets { get; set; }
      public List<string> TicketNames()
        {
            List<string> v = new List<string>();

            foreach (var developmentTicket in AllDevelopmentTickets)
            {
                var ticketIds = developmentTicket.id.ToString(CultureInfo.InvariantCulture);
                v.Add(ticketIds);
            }

            return v;
        }  
    }
}

我正在尝试查看我的API连接(以及所有代码)是否完成了它的工作并撤回了门票及其信息,更具体地说是ids。

在我的主程序中,我不知道如何检查它是否完成了这项工作。我尝试了一些东西,但它不太正确并且没有返回任何东西(我知道我需要一个Console.WriteLine)

        static void Main(string[] args)
        {

            Console.ReadLine();


            var tickets = new TicketSummary();
            tickets.TicketNames();
            while ( tickets != null )
            {
                Console.WriteLine(tickets);
            }

        }

有什么建议吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

您已删除了返回的结果:tickets.TicketNames();返回您必须分配然后 itterate List<String>

 var tickets = new TicketSummary();
 var names = tickets.TicketNames(); // <- names, List<String> according to the code

 // printing out all the names
 foreach(var name in names)   
   Console.WriteLine(name);

答案 1 :(得分:1)

你的意思是你只想打印所有门票吗?

foreach (var ticket in tickets.TicketNames())
{
    Console.WriteLine(ticket);
}

答案 2 :(得分:1)

您的代码中存在多个问题,这些问题应该使其无法进行编译,但除此之外,看起来您真正想要的是转换数据在AllDevelopmentTickets,而不是移动它在某处。所以你可以通过Select调用(来自LINQ)来完成它。所以,在你的主要方法中:

var tickets = new TicketSummary();
// add some tickets to tickets.AllDevelopmentTickets here...

var ticketNames = tickets.AllDevelopmentTickets.Select(ticket => ticket.id.ToString();
// Yes, you should probably use an UI culture in the ToString call. 
// I'm just trying to limit my line width =)

现在,ticketNames应该是IEnumerable<string>持有所有票证ID。例如,要打印出来,您可以迭代它们并写入控制台输出:

foreach (var name in ticketNames) {
    Console.WriteLine(name);
}

答案 3 :(得分:0)

您忽略了返回的值。

static void Main(string[] args)
    {

        Console.ReadLine();


        var tickets = new TicketSummary();
        var res = tickets.TicketNames();
        while ( for r in res )
        {
            Console.WriteLine(r);
        }

    }

答案 4 :(得分:0)

您需要指定/使用TicketNames()方法的返回值。这似乎很多工作只是为了返回TicketId的字符串版本。这可以减少

public List<string> TicketNames()
{
    return AllDevelopmentTickets
        .Select(t => t.id.ToString(CultureInfo.InvariantCulture))
        .ToList();
}  

   var ticketSummary = new TicketSummary();
   var ticketNames = ticketSummary.TicketNames();

    foreach(var ticketName in ticketNames)
    {
        Console.WriteLine(ticketName);
    }

或者甚至只是:

  foreach(var ticketName in AllDevelopmentTickets
        .Select(t => t.id.ToString(CultureInfo.InvariantCulture)))
  {
      Console.WriteLine(ticketName);
  }