-3

我有这个数据结构:

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"并找到具有类似 .org 的会议集合"uni"。我怎样才能做到这一点?

4

3 回答 3

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;
                        });
于 2012-08-28T10:41:46.797 回答
0

你可以这样做:

var selection = listConferences
                .Where(x => x.Orgs.SelectMany(y => y).Any(y => y.Contains("uni")))
                .ToList();

笔记:

根据您的需要,尾随ToList()可能不是必需的(例如,如果您仅在可以跳过它时迭代选择)。

于 2012-08-28T10:22:06.690 回答
0

完成,使用 linq 再进行一次锻炼。您应该对此感到满意:

var univ = from p in c.Orgs
                       select p.FindAll(r => r.FindAll(s => s.StartsWith("univ", StringComparison.OrdinalIgnoreCase)));
于 2012-08-28T16:48:53.883 回答