所以我有一个类的对象列表.在这个列表中我想得到对象在哪里Table.name == "value"
Class Table{
public string name;
private string primarykey;
private string[] columnNames;
//some methods and functions
}
Run Code Online (Sandbox Code Playgroud)
我的问题是有一个有效的方法从linq获取此列表中的指定对象,或者我只是通过基本的搜索算法循环这个.
使用基本搜索算法我的意思是:
foreach(Table t in tables)
{
if(t.name == "value")
return t;
}
Run Code Online (Sandbox Code Playgroud)
那么有没有一种更有效的方法来实现这一点,例如linq?
Jon*_*eet 12
您可以使用LINQ轻松完成,但效率不会更高:
var match = tables.FirstOrDefault(t => t.name == value);
Run Code Online (Sandbox Code Playgroud)
现在match将null是没有符合该标准的表格.在这种情况下,你需要弄清楚你想要发生什么.
LINQ代码较短,但仍需迭代列表中的每个表,直到找到匹配项.
您可能想要考虑Dictionary<string, Table>将名称映射到表 - 但显然需要每个名称只有一个表.此外,除非你真的有很多表,否则你可能会发现它真的没有更快.它是O(1)(假设没有哈希冲突)而不是O(n),但是当n很小时,O(n)真的非常快.我强烈建议你在担心它的效率之前检查这是否真的是一个瓶颈.