使用linq在列表中不存在元素时返回值

Der*_*rin 2 c# linq

我有以下代码,如果它存在于数组"arrayID"中,它将返回一个值.

string str = arrayID.Single(s => s == ((System.Data.DataRowView)(e.Item.DataItem)).Row["ID"].ToString());
Run Code Online (Sandbox Code Playgroud)

我现在面临的问题是,当值不存在时,我得到了错误

Sequence不包含匹配元素

我希望返回一个空字符串,因为arrayID中不存在该值.

请告诉我如何在linq中完成此操作.

提前致谢.

Joe*_*nos 6

这个SingleOrDefault方法就是你所追求的.如果没有项目,它将返回默认值(null),因此您只需要另一个步骤将其转换为空:

string str = arrayID
    .SingleOrDefault(s => s == ((System.Data.DataRowView)(e.Item.DataItem)).Row["ID"].ToString())
        ?? string.Empty
Run Code Online (Sandbox Code Playgroud)