C# 循环数组以设置viewmodel属性。如果索引没有';不存在?
我在一个嵌套在另一个项目数组中的项目数组中循环 几乎总是,内部数组包含5个索引,但我正在使用的提要中很可能只有4个索引 当我将索引添加到ViewModel时,如果缺少第五个索引,则一切都会崩溃 在此特定场景中,如何防止“索引超出数组边界”错误C# 循环数组以设置viewmodel属性。如果索引没有';不存在?,c#,arrays,nested-loops,C#,Arrays,Nested Loops,我在一个嵌套在另一个项目数组中的项目数组中循环 几乎总是,内部数组包含5个索引,但我正在使用的提要中很可能只有4个索引 当我将索引添加到ViewModel时,如果缺少第五个索引,则一切都会崩溃 在此特定场景中,如何防止“索引超出数组边界”错误 private List<ImageViewModel> ConvertSmugMugModel(SmugMugGallery smugMugGallery) { return smugMugGallery.Channel.Items.
private List<ImageViewModel> ConvertSmugMugModel(SmugMugGallery smugMugGallery)
{
return smugMugGallery.Channel.Items.Select(i => new ImageViewModel
{
TinyImage = i.Group.Contents[0].Url,
ThumbnailUrl = i.Group.Contents[1].Url,
SmallImageUrl = i.Group.Contents[2].Url,
MediumImageUrl = i.Group.Contents[3].Url,
LargeImageUrl = i.Group.Contents[4].Url
}).ToList();
}
我的第一个想法就是用这个?接线员,像这样:
private List<ImageViewModel> ConvertSmugMugModel(SmugMugModel smugMugGallery)
{
return smugMugGallery.Channel.Items.Select(i => new ImageViewModel
{
TinyImage = i.Group.Contents[0].Url,
ThumbnailUrl = i.Group.Contents[1].Url,
SmallImageUrl = i.Group.Contents[2].Url,
MediumImageUrl = i.Group.Contents[3].Url,
LargeImageUrl = i.Group.Contents.Count() > 4 ? i.Group.Contents[4].Url:new Url("blank")
}).ToList();
}
私有列表转换器SmugMugModel(SmugMugModel smugMugGallery)
{
返回smugMugGallery.Channel.Items.Select(i=>new ImageViewModel
{
TinyImage=i.Group.Contents[0]。Url,
ThumbnailUrl=i.Group.Contents[1]。Url,
SmallImageUrl=i.Group.Contents[2].Url,
MediumImageUrl=i.Group.Contents[3]。Url,
LargeImageUrl=i.Group.Contents.Count()>4?i.Group.Contents[4]。Url:新Url(“空白”)
}).ToList();
}
您可能还希望将该检查也放入其余元素中,除非您101%确定不会遇到少于4个元素。因此:
private List<ImageViewModel> ConvertSmugMugModel(SmugMugModel smugMugGallery)
{
return smugMugGallery.Channel.Items.Select(i => new ImageViewModel
{
TinyImage = i.Group.Contents.Count() > 0 ? i.Group.Contents[0].Url:new Url("blank"),
ThumbnailUrl = i.Group.Contents.Count() > 1 ? i.Group.Contents[1].Url:new Url("blank"),
SmallImageUrl = i.Group.Contents.Count() > 2 ? i.Group.Contents[2].Url:new Url("blank"),
MediumImageUrl = i.Group.Contents.Count() > 3 ? i.Group.Contents[3].Url:new Url("blank"),
LargeImageUrl = i.Group.Contents.Count() > 4 ? i.Group.Contents[4].Url:new Url("blank")
}).ToList();
}
私有列表转换器SmugMugModel(SmugMugModel smugMugGallery)
{
返回smugMugGallery.Channel.Items.Select(i=>new ImageViewModel
{
TinyImage=i.Group.Contents.Count()>0?i.Group.Contents[0]。Url:新Url(“空白”),
ThumbnailUrl=i.Group.Contents.Count()>1?i.Group.Contents[1]。Url:新Url(“空白”),
SmallImageUrl=i.Group.Contents.Count()>2?i.Group.Contents[2]。Url:新Url(“空白”),
MediumImageUrl=i.Group.Contents.Count()>3?i.Group.Contents[3]。Url:新Url(“空白”),
LargeImageUrl=i.Group.Contents.Count()>4?i.Group.Contents[4]。Url:新Url(“空白”)
}).ToList();
}
我的第一个想法是使用?接线员,像这样:
private List<ImageViewModel> ConvertSmugMugModel(SmugMugModel smugMugGallery)
{
return smugMugGallery.Channel.Items.Select(i => new ImageViewModel
{
TinyImage = i.Group.Contents[0].Url,
ThumbnailUrl = i.Group.Contents[1].Url,
SmallImageUrl = i.Group.Contents[2].Url,
MediumImageUrl = i.Group.Contents[3].Url,
LargeImageUrl = i.Group.Contents.Count() > 4 ? i.Group.Contents[4].Url:new Url("blank")
}).ToList();
}
私有列表转换器SmugMugModel(SmugMugModel smugMugGallery)
{
返回smugMugGallery.Channel.Items.Select(i=>new ImageViewModel
{
TinyImage=i.Group.Contents[0]。Url,
ThumbnailUrl=i.Group.Contents[1]。Url,
SmallImageUrl=i.Group.Contents[2].Url,
MediumImageUrl=i.Group.Contents[3]。Url,
LargeImageUrl=i.Group.Contents.Count()>4?i.Group.Contents[4]。Url:新Url(“空白”)
}).ToList();
}
您可能还希望将该检查也放入其余元素中,除非您101%确定不会遇到少于4个元素。因此:
private List<ImageViewModel> ConvertSmugMugModel(SmugMugModel smugMugGallery)
{
return smugMugGallery.Channel.Items.Select(i => new ImageViewModel
{
TinyImage = i.Group.Contents.Count() > 0 ? i.Group.Contents[0].Url:new Url("blank"),
ThumbnailUrl = i.Group.Contents.Count() > 1 ? i.Group.Contents[1].Url:new Url("blank"),
SmallImageUrl = i.Group.Contents.Count() > 2 ? i.Group.Contents[2].Url:new Url("blank"),
MediumImageUrl = i.Group.Contents.Count() > 3 ? i.Group.Contents[3].Url:new Url("blank"),
LargeImageUrl = i.Group.Contents.Count() > 4 ? i.Group.Contents[4].Url:new Url("blank")
}).ToList();
}
私有列表转换器SmugMugModel(SmugMugModel smugMugGallery)
{
返回smugMugGallery.Channel.Items.Select(i=>new ImageViewModel
{
TinyImage=i.Group.Contents.Count()>0?i.Group.Contents[0]。Url:新Url(“空白”),
ThumbnailUrl=i.Group.Contents.Count()>1?i.Group.Contents[1]。Url:新Url(“空白”),
SmallImageUrl=i.Group.Contents.Count()>2?i.Group.Contents[2]。Url:新Url(“空白”),
MediumImageUrl=i.Group.Contents.Count()>3?i.Group.Contents[3]。Url:新Url(“空白”),
LargeImageUrl=i.Group.Contents.Count()>4?i.Group.Contents[4]。Url:新Url(“空白”)
}).ToList();
}
你不知道吗。我用I.Group.Contents.Length()
尝试了同样的方法,但失败了。我想我应该仔细阅读我的方法。现在我很好奇Group.Contents对象是什么类型,正如我所期望的。Count是一个属性而不是一个方法。你不知道吗。我用I.Group.Contents.Length()
尝试了同样的方法,但失败了。我想我应该仔细阅读我的方法。现在我很好奇Group.Contents对象是什么类型,正如我所期望的那样。Count应该是一个属性而不是一个方法。