我有一个对象列表,比如DataTables。
是否可以仅使用列表中的对象?
例如,如果TableList包含名为a,b,c,d,e的5个DataTable。
select * from table1 where id not in (select t1.id from table1 t1 join table2 t2 on t1.id = t2.table1_id where t2.x = 1 or t2.x = 2);
答案 0 :(得分:4)
假设TableList
的元素类型是引用类型,您可以使用FirstOrDefault()
返回第一个匹配或null,然后使用null条件运算符仅在目标为非时调用方法-null:
TableList.FirstOrDefault(t => t.TableName == "a")?.DoStuff();
所以你的原始代码相当于:
var tableA = TableList.FirstOrDefault(t => t.TableName == "a");
if (tableA != null)
{
tableA.DoStuff();
}
else
{
TableList.FirstOrDefault(t => t.TableName == "f").DoStuff();
}
或者,如果你要对你最终使用的表做同样的事情,而你只是想获得正确的表,你可以使用或者使用空合并运算符:
// Find an "a" table if possible, but revert to an "f" table otherwise.
var table = TableList.FirstOrDefault(t => t.TableName == "a") ??
TableList.FirstOrDefault(t => t.TableName == "f");
// Call DoStuff() on the table - handling the case where there isn't an
// "a" or an "f" table.
table?.DoStuff();