同様:文字列をLinq.Expressionsに変換しますか、それとも文字列をセレクターとして使用しますか?
その類似したもの:Linq式を文字列として渡す?
同じ答えの別の質問:C#の文字列から動的ラムダベースのLinq式を作成するにはどうすればよいですか?
同様の質問がたくさんあるものを尋ねる理由:
これらの同様の質問で受け入れられた答えは、古いフレームワーク(.net 3.5)用に作成された4年前のライブラリ(コードマスターScott Guによって作成されたことを認める)をすべて参照し、答えとしてリンク。
ライブラリ全体を含めずにコードでこれを行う方法があります。
この状況のサンプルコードは次のとおりです。
public static void getDynamic<T>(int startingId) where T : class
{
string classType = typeof(T).ToString();
string classTypeId = classType + "Id";
using (var repo = new Repository<T>())
{
Build<T>(
repo.getList(),
b => b.classTypeId //doesn't compile, this is the heart of the issue
//How can a string be used in this fashion to access a property in b?
)
}
}
public void Build<T>(
List<T> items,
Func<T, int> value) where T : class
{
var Values = new List<Item>();
Values = items.Select(f => new Item()
{
Id = value(f)
}).ToList();
}
public class Item
{
public int Id { get; set; }
}
これは、文字列全体を次のような式に変換することを目的としていないことに注意してください。
query = "x => x.id == somevalue";
しかし、代わりにアクセスとして文字列のみを使用しようとしています
query = x => x.STRING;