5

私はオブジェクトを取得します

IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);        

List文字列で指定されたタイプのオブジェクトを取得するにはどうすればよいですか?

Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work
4

2 に答える 2

4

あなたがやろうとしていることは静的に行うことはできません:式の静的varタイプに対応しますが、右側の式のタイプは明らかに非静的です(実行前には不明です)。IEnumerable<T>T

ただし、これは合法です。

var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v));

これにより、が生成されIEnumerable<ObjectStateEntry>ます。

于 2012-11-07T11:43:54.720 に答える
1

どうですか

Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ);

彼は、タイプが完全に一致する場合に一致を返すことに注意してください(同じ継承ツリーにあるのとは対照的です)。

于 2012-11-07T11:43:40.580 に答える