私は、特別な問題のためにlinq querysを構築する方法を探しています。どのように動的なlinqクエリを構築して一連の制約を解決するのですか?
x1> = 5、x2> = 7、Math.Sqrt(x1 + x2)のような式の集合と整数を取ることができるx1、x2、 )= 8 ....いくつかの変数を含んでいます。
私の意図は、式を考慮に入れた変数の解を得ることです。
与えたとえば、あなたがこのようなものを作成することができます
var zeroToMaxValue = Enumerable.Range(0, int.MaxValue);
var cp = zeroToMaxValue.AsParallel()
.Where(x1 => x1 >= 5)
.Select(x1 => new { x1 });
var cp2=cp
.SelectMany(query => zeroToMaxValue,(query, x2) => new { query.x1, x2 })
.Where(query => query.x2 >= 7 && Math.Sqrt(query.x2 + query.x1) == 8);
var result = cp2.First();
{
Console.WriteLine("x1: " + result.x1 + " x2: " + result.x2);
}
出力がある:×1:5×2:59
誰がなるように動的に をquerysのこの種を作成しない方法を知っていますが私はそれぞれの表現が実現する解決策を得ます。
私はすでにPredicateBuilderクラスを試して、How do you add dynamic 'where' clauses to a linq query?のように件名に関する投稿を検索しました。しかし、私が試したことは何も働かなかった。
私の主な問題の1つは、多くの変数を選択しなければならないという事実です。それぞれの変数には、それぞれ独自の数値が設定されています。これは、変数があるのと同じくらい多くのクエリを構築しなければならないということを意味しています。
私ができる最後のことは、ストリングビルダでこれらの種類のクエリを構築することですが、誰かが私を助けてより良い方法を知ってくれることを願っています。
ありがとうございました!
[LINQ TO Z3 - ステロイド定理解決]を見てみましょう(http://community.bartdesmet.net/blogs/bart/archive/2009/09/27/linq-to-z3-theoremを-solving-on-steroids-part-1.aspx) – Eranga