-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"組織を持つ会議のコレクションを見つけたい"uni"。これどうやってするの?

4

3 に答える 3

0

あなたはこれを行うことができます:

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

ノート:

必要に応じて、末尾ToList()は必要ない場合があります(たとえば、選択を1回だけ繰り返す場合は、スキップできます)。

于 2012-08-28T10:22:06.690 に答える
0

以下のこのコードを使用してください。3つ目の代わりに、独自の会議リストを使用できます。likeキーワードを使用できるようになりました。

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

完了、linqを使用したもう1つのトレーニング。あなたはこれに満足しているはずです:

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 に答える