【问题标题】:How to access items in a list [closed]如何访问列表中的项目[关闭]
【发布时间】:2014-08-13 19:09:44
【问题描述】:

我有这个代码:

List<MyTable> list = db.MyTable.ToList();
list = list.FindAll(x => x.ID == entry.IDClient);

我发现访问返回值的唯一方法是使用 foreach :

foreach (var myList in list)
{
    entry.Address = myList.Address ;
}

还有其他方法吗?

【问题讨论】:

  • 使用list[0] 访问第一个项目,list[1] 访问第二个项目,依此类推。见MSDN: List&lt;T&gt;.Item Property
  • 使用foreach 循环有什么问题?
  • 某种关联索引?喜欢list=&gt;Adress 吗?还是只能用数字?
  • @AlanoTeles 您可以使用list[0].Address 获取第一项的Address 属性。
  • @Servy,这是因为我发现只对一行使用 foreach 有点奇怪。我可视化了像数组这样的列表,并质疑当你有一个只有一行的数组时是否可以直接访问一个元素。我还在学习 C#...

标签: c# list


【解决方案1】:

您可以使用List&lt;T&gt;.Find 代替FindAll。这将返回一个元素。

var listItem = list.Find(x => x.ID == entry.IDClient);
entry.Address = listItem.Address;

【讨论】:

  • 你认为他为什么需要一个元素?
  • @Selman22 因为他正在做的任务;)他正在分配给一个entity ...
  • @Selman22 查看代码 - 他试图在 MyTable 中找到与 entity.IDClient 匹配的元素,然后跨地址复制 - 似乎单个元素是这里的问题。
  • 好吧,解决问题的方法是改变了我创建列表的方式,使用了部分解决方案@ReedCopsey。而无需foreach 直接访问该值,@p.s.w.g 的提示解决了。 List&lt;MyTable&gt; list = db.MyTable.Where(x =&gt; x.ID == entry.IDClient).ToList(); entry.Address= list[0].Address; *抱歉,格式错误,但我的空格没有被转换为代码块或换行符。感谢您的帮助。
【解决方案2】:

你可以像你说的那样使用foreach循环:

foreach(var I in list)
{
     //do stuff
}

或者,如果您知道您想要的项目的位置,您可以调用列表中的单个项目。

list[0]

这将为您提供第一个项目,依此类推...

您还可以使用 for 循环遍历列表:

for(int I = 0; I < list.lenght; I++)
{
    list[I]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2011-01-02
    • 2013-05-07
    • 2020-09-20
    相关资源
    最近更新 更多