同様の質問は確かに見ましたが、何らかの理由で、このクエリを正しく機能させることができません。私はSystem.Linq.Dynamic.Core
を使用しており、ユーザー入力に基づいて結果を動的にSystem.Linq.Dynamic.Core
うとしています。例の "PatternName、Model"文字列は通常変数です。これが私が試したものです。
IQueryable sortedResults = from reqs in dataContext.Requirements
join pats in dataContext.Patterns on reqs.PatternRequirement equals pats.Id
join sups in dataContext.Suppliers on reqs.SupplierRequirement equals sups.Id
orderby ("PatternName, Model")
select new
{
reqs.Id,
sups.SupplierName,
pats.PatternName,
reqs.Model,
reqs.YardageRequirements,
reqs.Repeat,
reqs.ModelDescription,
reqs.CreateUser,
reqs.CreateTimeStamp,
reqs.UpdateUser,
reqs.UpdateTimeStamp
};
return sortedResults;
これはコンパイルしてエラーなしで実行されますが、私の結果セットは必要な順序で並べられていません。私も試しました:
IQueryable sortedResults = from reqs in dataContext.Requirements
join pats in dataContext.Patterns on reqs.PatternRequirement equals pats.Id
join sups in dataContext.Suppliers on reqs.SupplierRequirement equals sups.Id
select new
{
reqs.Id,
sups.SupplierName,
pats.PatternName,
reqs.Model,
reqs.YardageRequirements,
reqs.Repeat,
reqs.ModelDescription,
reqs.CreateUser,
reqs.CreateTimeStamp,
reqs.UpdateUser,
reqs.UpdateTimeStamp
};
sortedResults.OrderBy("PatternName").ThenBy("Model");
return sortedResults;
これもエラーなしで実行されますが、同じ結果になります。 Dynamic Linqを使用して見た例のほとんどはメソッド構文を使用していますが、そのように内部結合を作成する方法がわかりません。メソッド構文を使用して行う必要がありますか?もしそうなら、複数のテーブルで結合する例を提供できますか?
どんな助けでもありがたいです。
の
sortedResults.OrderBy("PatternName").ThenBy("Model");
間違っている!
sortedResults = sortedResults.OrderBy("PatternName").ThenBy("Model");
Linqメソッドはクエリを変更せず、元のクエリとは異なる新しいクエリを返します。
linq構文を使用して動的linqを使用することはできません。関数構文を使用する必要があります。