所以我有一个简单的查询,我从我的数据库中选择AppDictionary对象。 我的AppDictionary对象有一个包含3种语言(EN,FR,ES)的字段和一个名为" Text"的字段。我的目标是基于应用程序设置的任何语言,该值是Text字段中的值。例如,我可以有类似的东西。
EN | FR | ES
鞋子chaussure | Zapato
如果用户的语言设置为英语,则文本字段将填充Shoe,如果是西班牙语,则文本字段将填充Zapato。
我想知道是否还有我从db中执行EF读取,即context.Appdictionaries.Where ...并根据我给它的参数填充Text字段。
非常感谢任何帮助。
在原始SQL中,我只是别名,但我不确定如何告诉EF这样做。
对不起,这是我班上的样子。请注意所有语言的字段。
public class AppDictionary
{
public int Id { get; set; }
[NotMapped]
public string Text;
...
public string EN { get; set; }
public string FR { get; set; }
public string DE { get; set; }
public string PT { get; set; }
public string ES { get; set; }
答案 0 :(得分:0)
是的,您可以在Where<T>(Expression<Func<T,bool>> predicate)
类型上使用IQueryable<T>
,或者您的Context
将返回IQueryable<T>
,其中T
是您object
} - AppDictionary
(大概)。
生成的SQL将创建一个使用谓词的WHERE
子句;
执行时(或Enumerated on),查询将填充结果。
//presumed to be your 'Entity'.
public partial class AppDictionary
{
public string Language {get;set;}
public string Text {get;set;}
}
public IEnumerable<string> GetResults(string lang)
{
var query = context.AppDictionaries.Where((record) => String.Compare(record.Language.ToLower(), lang.ToLower(), true) == 0);
return query.AsEnumerable(); //executes and loads at this point
}
这是一个相当简单的查询表达式。