var slots = new List<slot>()
{
new slot { Ids = "2,3,4,6,8,9,1" },
new slot { Ids = "10,11,12,13,1,7" },
new slot { Ids = "1,4,6,5,10,11,29,40,7" },
};
最重要的是列表中有“ 1”,但是如果我搜索一个,那么它会因为索引而返回3d列表,因此只需要比较索引并取一个即可。
如果我搜索“ 7”,则它将返回第二个列表。
总体来说,如果有多个匹配结果,则应根据位置返回一个列表
如果找到另一个匹配项,则取该数组;如果找到另一个匹配项,则取其索引最低的数组。
如何实现呢?
您将需要按逗号分割,然后按索引排序。由于split将返回一个数组,因此您首先需要创建一个列表:
slot candidate = (from s in slots
let parts = s.Ids.Split(',')
where parts.Contains(searchItem)
orderby Array.IndexOf(parts, searchItem)
select s).FirstOrDefault();
详细信息:let
零件允许您将拆分结果临时保存在可变零件中。这样,您可以避免在执行order by子句时再次拆分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句