我正在努力解决这个特定主题。 我有一个struct元素列表,需要在方法中用作参数。
public struct MyStruct
{
public string F1;
public string F2;
}
List<MyStruct> NewList = new List<MyStruct>();
NewList.Add(new MyStruct { F1 = "AAA", F2 = "BBB" });
NewList.Add(new MyStruct { F1 = "CCC", F2 = "DDD" });
如果我尝试使用LINQ查找该列表中的项目,则可以使用: var Element = NewList.Find(x => x.F1 ==“ AAA”);
但是Element返回了我无法转换为列表的内容吗? 我可以使用Element.F1或Element.F2,但是如果我需要将Element本身传递给方法,该怎么办? 另外,如果我尝试将Element定义为:
List<MyStruct> Element = NewList.Find(x => x.F1 == "AAA");
失败!但为什么? 元素不是那个结构吗? .Find搜索一个元素,该元素是在结构字段F1和F2中定义的2个字符串。
如果我使用.FindAll,定义List<MyStruct> Element
上的错误似乎消失了?
如何为NewList定义一个元素?
有人可以帮我吗?
预先感谢
答案 0 :(得分:1)
List<T>.Find
仅返回一个元素,而不返回List<T>
。您应该将Element
变量声明为MyStruct
:
MyStruct Element = NewList.Find(x => x.F1 == "AAA");
您还应该考虑Find
在找不到匹配值时返回存储在列表中的类型的默认值。