我在为 IQueryable 创建扩展方法时遇到问题,该方法将包括 Linq 查询中指定列的翻译。
假设我有以下查询。我想在 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;
}