Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq表达式在不运行时崩溃';我找不到我想要的东西;我在找_C#_.net_Linq - Fatal编程技术网

C# Linq表达式在不运行时崩溃';我找不到我想要的东西;我在找

C# Linq表达式在不运行时崩溃';我找不到我想要的东西;我在找,c#,.net,linq,C#,.net,Linq,如果i={1,2}没有问题 如果iId=3(或任何其他值),为什么.First()会崩溃 public类C{public int ID,public string nam} int i=3; C=新名单; c、 添加(新的c{ID=1,nam=“hello”}); c、 添加(新的c{ID=2,nam=world“}); C r=C.First(e=>e.ID.Equals(i)); 例外情况是: 用户代码未处理InvalidOperationException 序列不包含匹配元素 我认为表达

如果i={1,2}没有问题

如果iId=3(或任何其他值),为什么.First()会崩溃

public类C{public int ID,public string nam}
int i=3;
C=新名单;
c、 添加(新的c{ID=1,nam=“hello”});
c、 添加(新的c{ID=2,nam=world“});
C r=C.First(e=>e.ID.Equals(i));
例外情况是:

用户代码未处理InvalidOperationException

序列不包含匹配元素

我认为表达式至少要返回null。 相反,它崩溃了。
那对我来说毫无意义。 返回的null对我来说是有意义的

如何解决这个问题?您的最佳做法是什么?

第一个(e=>e.ID.Equals(i))
更改为
FirstOrDefault(e=>e.ID.Equals(i))
,然后您将得到null(因为
default(C)
为null,这是引用类型的默认值)你可以处理你认为合适的方式,而不是让你的应用程序崩溃

这里是指向
FirstOrDefault
的MDSN链接,如果您需要更多信息/示例:
我倾向于同意。First()可能会更疯狂一些,但通过使用.FirstOrDefault()可以得到想要的结果

public class C { public int ID, public string nam }
int i = 3;
C c = new List<C>;
c.Add(new C{ID = 1, nam="hello" });
c.Add(new C{ID = 2, nam=world" });
C r = c.First(e => e.ID.Equals(i));