ダイナミックを使用する場合は、ここで実行できます。あなたはb
変数がId
性質を持っていますが、インターフェイスを使用することができない、そして何らかの理由がわからない、いくつかの種類のリストであることを知っているとします
public class SomethingWithId {
public int Id { get; set; }
}
// you have no idea what that is at runtime
object something = new List<SomethingWithId>() {new SomethingWithId() {Id = id}};
その後、あなたはこのようなdynamic
使用することができます。
を
object something = new List<SomethingWithId>() {new SomethingWithId() {Id = id}};
// cast to `IEnumerable<dynamic>`, this will always compile
// but of course might fail at runtime, as always with dynamic
// in your case that is (IEnumerable<dynamic>) Convert.ChangeType(dataToCompareTo, Type.GetType(tableName));
var b = (IEnumerable<dynamic>) something;
// run your query
var values = (from item in b
where item.Id == id
select item).FirstOrDefault();
これは、C#でそのようなことを行うのに慣れていないと言いました。強く型付けされたlangugeであり、それによってもたらされる利点を無視してはいけません。
出典
2017-11-30 20:09:56
Evk
'dynamic b ='を 'var b ='で変更した場合、それを試してみましたか? – MethodMan
@MethodManどうすればそれが役に立ちますか? bはlinq式では使用できないオブジェクトになります。IEnumerableを期待しています –
オペレーションはそのオブジェクトを '(IEnumerable)'が次の推測となるようにキャストする必要があります – MethodMan