1

テーブル「TLanguage」を使用して、サイトのラベル結果を記録します。このテーブルには、フランス語、英語、ドイツ語、スペイン語の 4 つの列があります。

MVC アプリケーションでは、次のクエリを使用します。

 var req = (from TYP in context.TYP_TypeMission
                   join ML in context.TLanguage on TYP.IDTMultiLanguage equals ML.IDTMultiLanguage
                  where TYP.IDTFiliale == idFiliale
                  orderby TYP.LibTypeMission
                  select new SelectListItem
                  {
                      Selected = TYP.IdTypeMission == idTypeMission,
                      Value = SqlFunctions.StringConvert((double)TYP.IdTypeMission),
                      Text = ML.French
                  }).ToList();

サイトの言語に応じて、クエリで ML.French を ML.English または ML.German に変更するにはどうすればよいですか?

クエリで間接化を作成することは可能ですか?

4

2 に答える 2

0

クエリの先頭を変数に保存し、後で最後の部分のみを変更できます。

var query = from TYP in context.TYP_TypeMission
            join ML in context.TLanguage on TYP.IDTMultiLanguage equals ML.IDTMultiLanguage
            where TYP.IDTFiliale == idFiliale
            orderby TYP.LibTypeMission
            select new { ML, TYP };

List<SelectListItem> req;

if(Site.Lang == "DE")
{
    req = (from item in query
           select new SelectListItem
           {
               Selected = item.TYP.IdTypeMission == idTypeMission,
               Value = SqlFunctions.StringConvert((double)item.TYP.IdTypeMission),
               Text = item.ML.German 
           }).ToList();
}
else if(Site.Lang == "FR")
{
    req = (from item in query
           select new SelectListItem
           {
               Selected = item.TYP.IdTypeMission == idTypeMission,
               Value = SqlFunctions.StringConvert((double)item.TYP.IdTypeMission),
               Text = item.ML.French
           }).ToList();
}
else
{
    req = (from item in query
           select new SelectListItem
           {
               Selected = item.TYP.IdTypeMission == idTypeMission,
               Value = SqlFunctions.StringConvert((double)item.TYP.IdTypeMission),
               Text = item.ML.English
           }).ToList();
}

ToList()が呼び出されるまでクエリは実行されません。

于 2013-04-29T13:03:15.433 に答える