C# 从集合中访问数据
我有一个从自定义函数返回的数据集合,我可以枚举它,但是我不能只得到一个项目(我不理解语法): 如果我可以枚举一些东西,有没有一种标准的方法可以访问单个实例中的数据?我会尝试使用Linq for循环工作的可能原因是您的C# 从集合中访问数据,c#,C#,我有一个从自定义函数返回的数据集合,我可以枚举它,但是我不能只得到一个项目(我不理解语法): 如果我可以枚举一些东西,有没有一种标准的方法可以访问单个实例中的数据?我会尝试使用Linq for循环工作的可能原因是您的currentDoc是一个IEnumerable,它支持枚举但不支持索引访问 如果要访问第一个元素以外的其他元素,可以将currentDoc转换为数组currentDoc.ToArray()或列表currentDoc.ToList() 如果currentDoc中正好有1个项目,这将起
currentDoc
是一个IEnumerable
,它支持枚举但不支持索引访问
如果要访问第一个元素以外的其他元素,可以将currentDoc
转换为数组currentDoc.ToArray()
或列表currentDoc.ToList()
如果currentDoc中正好有1个项目,这将起作用。如果有0个或2个以上的项目,它将引发异常
如果有0或1项,则可以使用currentDoc.SingleOrDefault()代替,如果currentDoc为空,则返回null
如果您有多个项目,则可以使用currentDoc.First()或currentDoc.FirstOrDefault(),但在这种情况下,您可能需要考虑为什么您的集合中有多个项目,以及使用哪一个是“正确的”项目。我觉得重要的是指出,如果在您的收藏中找不到某个项目,
Single
或First
将引发异常。我倾向于SingleOrDefault
或FirstOrDefault
。第二项,我认为是被误解了,你想编辑你收藏中的一项。除非您认为需要在编辑之前获取初始项
您可以通过以下几种方法执行此操作:
var example = collection.ElementAt(0);
if(example != null)
collection[example].Property = value;
collection.FirstOrDefault().Property = value;
collection.SingleOrDefault().Property = value;
如果您只是想要收藏中的第一项:
var example = collection.ElementAt(0) as string;
var example = collection.FirstOrDefault() as string;
var example = collection.SingleOrDefault() as string;
这是几种方法,小心使用
ToString
,如果该值不存在,它将抛出异常。这取决于currentDoc
的类型。如果它是一个IEnumerable
则不能,如果它是其他的则可能。currentDoc的类型是什么?IList
是定义索引器的接口。可能正如其他人指出的那样,currentDoc
是一个IEnumerable。您可以尝试在currentDoc
上调用ToList()
,然后尝试这样做。此外,如果您只关心获取[0]
,那么currentDoc.First()[“menuitemtesterimage”]。ToString()
可以工作。如果currentDoc是一个列表或数组,则可以使用currentDoc[0]对其进行索引否则,如果currentDoc.First()至少实现了IEnumerable,则可以使用它获取单个项
string itemSingle = currentDoc.Single()["MenuItemTeaserImage"].ToString();
var example = collection.ElementAt(0);
if(example != null)
collection[example].Property = value;
collection.FirstOrDefault().Property = value;
collection.SingleOrDefault().Property = value;
var example = collection.ElementAt(0) as string;
var example = collection.FirstOrDefault() as string;
var example = collection.SingleOrDefault() as string;