C# 如果SingleOrDefaultValue抛出InvalidOperationException,如何从中获取值

C# 如果SingleOrDefaultValue抛出InvalidOperationException,如何从中获取值,c#,C#,我面临一些问题。我需要记录哪个Id引发了InvalidOperationException,例如,campaignIDsRange集合包含两个Dublicate(12,12),我如何记录这个数字 try { dashboardItems.AddRange( campaignIdsRange.Select(

我面临一些问题。我需要记录哪个Id引发了InvalidOperationException,例如,campaignIDsRange集合包含两个Dublicate(12,12),我如何记录这个数字


                try
                {
                    dashboardItems.AddRange(
                        campaignIdsRange.Select(
                            campaignId => dashboardItemsRange.SingleOrDefault(x => x.campaign_id == campaignId));
                }
                catch (InvalidOperationException e)
                {
                  
                    _logger.Warning(, e);
                    Console.WriteLine(e);
                    throw;
                }
                

可以将try块放在Select方法中

dashboardItems.AddRange(
    campaignIdsRange
        .Select(campaignId => 
        {
            try
            {
                return dashboardItemsRange.SingleOrDefault(x => x.campaign_id == campaignId);
            }
            catch (InvalidOperationException e)
            {
                _logger.Warning(, e);
                Console.WriteLine(e);
                throw;
            }
        });

可以将try块放在Select方法中

dashboardItems.AddRange(
    campaignIdsRange
        .Select(campaignId => 
        {
            try
            {
                return dashboardItemsRange.SingleOrDefault(x => x.campaign_id == campaignId);
            }
            catch (InvalidOperationException e)
            {
                _logger.Warning(, e);
                Console.WriteLine(e);
                throw;
            }
        });

使用
。其中
,查看返回的结果数量。您必须在单独的步骤中进行验证
var dups=dashboardItemsRange.GroupBy(x=>x.campaign_id==campaign id)。其中(g=>g.Count()>1)。选择(y=>y.campaign_id)。ToList()
然后查看列表是否为空。@MatthewWatson谢谢,中间步骤看起来如何使用
。在
中,查看返回的结果数。您必须在单独的步骤中进行验证
var dups=dashboardItemsRange.GroupBy(x=>x.campaign_id==campaign id)。其中(g=>g.Count()>1)。选择(y=>y.campaign_id)。ToList()然后查看列表是否为空。@MatthewWatson谢谢,中间步骤看起来如何“需要记录哪个Id引发InvalidOperationException”“需要记录哪个Id引发InvalidOperationException”