我有这个数据结构:
class Conference
{
private List<List<string>>_orgs;
public List<List<string>> Orgs
{
set { _orgs = value; } get { return _orgs; }
}
}
此系列中的数据:
List<string> sublist = new List<string>();
sublist.Add("university");
sublist.Add("organization");
List<List<string>> list = new List<List<string>>();
list.Add(sublist);
然后:
Conference c = new Conference();
c.Orgs = list;
我收集了会议对象:
List<Conference> listConferences = new List<Conference>();
listConferences.Add(c);
我希望搜索类似"uni"
的字符串,并查找会议集合,如"uni"
。我怎么能这样做?
答案 0 :(得分:0)
你可以这样做:
var selection = listConferences
.Where(x => x.Orgs.SelectMany(y => y).Any(y => y.Contains("uni")))
.ToList();
注意:
根据您的需要,可能不需要跟踪ToList()
(例如,只有在您跳过选项后才重复选择)。
答案 1 :(得分:0)
请使用以下代码; 您可以使用自己的会议列表而不是第三个。你现在可以使用类似关键字。
List<string> first = new List<string>();
first.Add("University");
first.Add("Standard");
List<List<string>> second = new List<List<string>>();
second.Add(first);
List<List<List<string>>> third = new List<List<List<string>>>();
third.Add(second);
var e = third.Find(delegate(List<List<string>> r)
{
bool isValid = false;
if(r.Count > 0)
{
foreach(List<string> s in r)
{
if(s.Count > 0 )
{
isValid = s.FindAll(delegate(string t){ return t.StartsWith("uni", StringComparison.OrdinalIgnoreCase);}).Count > 0;
}
}
}
return isValid;
});
答案 2 :(得分:0)
完成,再使用linq进行一次锻炼。你应该对此感到满意:
var univ = from p in c.Orgs
select p.FindAll(r => r.FindAll(s => s.StartsWith("univ", StringComparison.OrdinalIgnoreCase)));