2

次のコードがあります。

public class MyObject {
  public string Name { get; set; }

  public MyObject(string name) {
    Name = name;
  }  
}

// caller method somewhere
public void myMethod() {
  List<MyObject> myObjects = new List<MyObject>();
  myObjects.Add(new MyObject("Jim"));
  myObjects.Add(new MyObject("David"));
  myObjects.Add(new MyObject("Richard"));
  myObjects.Add(new MyObject("Steve"));

  string[] namesToExclude = new string[] { "Jim", "Steve" };
  List<string> strings = myObjects.Select(m => m.Name).Except(namesToExclude).ToList();
  // replace the above line to result in List<MyObject> with 2 items (David, Richard)
}

List<MyObject>リストをではなくとして取得できるように、この最後の行を機能させたいと思いList<string>ます。

4

5 に答える 5

7

これを試して:

 var objects = 
      myObjects.Where(m => !namesToExclude.Contains(m.Name)).ToList();
于 2012-10-24T19:30:12.583 に答える
3

結果を元のリストにExcept使用できますjoin

var allowedObjNames = myObjects.Select(o => o.Name).Except(namesToExclude);
var allowedObject = from o in myObjects join a in allowedObjNames 
                    on o.Name equals a
                    select o;
var allowedObjList = allowedObject.ToList();
于 2012-10-24T19:30:50.380 に答える
2

私はVB.NETの使用に慣れているので、これは少し間違っているかもしれませんが、次のようなものです...

(from m in myObjects where !namesToExclude.Contains(m.Name)).ToList()
于 2012-10-24T19:30:17.097 に答える
2

最後の行を - に置き換えます

List<MyObject> objects = myObjects.Where(o =>
                           !namesToExclude.Contains(o.Name)).ToList();
于 2012-10-24T19:32:58.750 に答える
2
var objs = myObjects.Where(m => !namesToExclude.Contains(m.Name)).ToList();
于 2012-10-24T19:30:49.270 に答える