ParsedTemplateクラスには、300以上のプロパティ(詳細とブロック詳細を入力)があります。 parsedTemplateオブジェクトは関数で埋められます。このオブジェクトを塗りつぶした後、LINQ(または他の方法)が必要です。IsExist=false
とPriority="high"
の "body"や "img"のようなプロパティがあります。私のマシンでLINQを使用したクラスプロパティの反復処理
bool isMatching = (from prop in typeof(ParsedTemplate).GetProperties()
where typeof(Details).IsAssignableFrom(prop.PropertyType)
let val = (Details)prop.GetValue(parsedTemplate, null)
where val != null && !val.IsExist && val.Priority == "high"
select val).Any();
作品:あなたは本当にそれをしながら、LINQを使用したい場合は
public class Details
{
public bool IsExist { get; set; }
public string Priority { get; set; }
}
public class BlockDetails : Details
{
public string Block { get; set; }
}
public class ParsedTemplate
{
public BlockDetails body { get; set; }
public BlockDetails a { get; set; }
public Details img { get; set; }
...
}
は、これは本当に簡単です。反射を伴いますが、LINQがどのように役立つかはわかりません。なぜ誰もがLINQのあらゆる問題を解決しようとしていますか? – cadrell0
@ cadrell0人々はLINQが銀色の弾丸だと思う傾向があるので、 – sloth
@ cadrell0とそれらのレーザーのものを行う奇妙な構文はすべてLINQ – sloth