Linq クエリで指定された列の変換を含む IQueryable の拡張メソッドを作成するのに問題があります。
以下のクエリがあるとします。翻訳を取得したい列を指定して、CFG_Article IQueryable でメソッド IncludeTranslation を呼び出したいと思います。誰かが正しい方向に私を助けることができますか?
var translations =
from t in UoW.CFG_TRANSLATION.GetAll()
select t;
var result = (
from a in UoW.CFG_ARTICLE.GetAll()
select new
{
a,
translation = translations
.Where(t=> t.TR_TEXT == a.AR_NAME).FirstOrDefault()
});
これまでに出てきたのは以下のコードだけですが、これはコンパイルされません。
public static IQueryable IncludeTranslation<T>(
this IQueryable<T> query,
Expression<Func<t, bool>> fieldToTranslate)
{
// this will get an IQueryable of CFG_TRANSLATION
var translations = GetTranslations();
var result = (
from q in query
select new
{
q,
translation = translations
.Where(t=> t.TR_TEXT == fieldToTranslate)
.FirstOrDefault()
});
// even better is to return all fields from query
// + the TR_TRANSLATION field from the translations table
return result;
}