如何从列表/集合中获取特定类型的最后一项?

时间:2017-12-03 15:51:04

标签: c# .net list collections outlook

目前我正在使用Outlook,我正在遍历一个项目列表。

问题在这里: 我想在foreach循环中询问当前项目是否是最后一项 - 但我无法解决这类问题。

这是我的代码:

lastAppointmentItem = myAppointmentItems.GetLast();
foreach (Outlook.AppointmentItem myItem in myAppointmentItems)
{
    // Types
    // myAppointmentItems = Outlook.Items
    // myItem = Outlook.AppointmentItem
    if(myItem.Equals(lastAppointmentItem)) { do_something(); }
}

当我运行程序时,我得到了一个

System.Runtime.InteropServices.COMException:
// The last element of the list cannot be called

那我怎么能解决我的问题 - 你们知道吗?

提前致谢!

问候。

2 个答案:

答案 0 :(得分:0)

我能够使用System.Linq类来获取.Last()方法的使用。我有以下示例工作。

namespace StackOverflow
{
   class Program
   {
      static void Main(string[] args)
      {
         List<Test> tests = new List<Test>()
         {
            new StackOverflow.Test()
            {
                id = "test",
                name = "name"
            },
            new StackOverflow.Test()
            {
                id = "test1",
                name = "name1"
            },
            new StackOverflow.Test()
            {
                id = "test2",
                name = "name2"
            },
        };

        var lastItem = tests.Last();
        foreach(Test test in tests)
        {
            if (test.Equals(lastItem))
            {
                Console.WriteLine("last item has been cycled to");
            }
        }
        Console.ReadLine();            
      }
   }

   public class Test
   { 
     public string id { get; set; }
     public string name { get; set; }
   }
}

答案 1 :(得分:0)

不要使用“foreach”循环使用从1到myAppointmentItems的“for”循环。不要忘记对其进行排序(myAppointmentItems.Sort(...))以获得有意义的顺序。