C# Linq表达式在不运行时崩溃';我找不到我想要的东西;我在找
如果i={1,2}没有问题 如果iId=3(或任何其他值),为什么.First()会崩溃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 序列不包含匹配元素 我认为表达
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));