在#</t>中在运行时创建动态类型到IQueryable <t>

时间:2012-04-29 05:49:58

标签: c# multilingual iqueryable

我正在使用asp.net和c#开发一个多语种新闻门户网站。目前,该站点支持两种语言,并在需要时将其扩展为其他语言。因此,我的工作是为网站创建基本框架。根据客户要求,要存储在不同语言的网站数据库中的内容可能不同。所以,我创建了不同的表来存储不同语言的新闻(如tblNews_EN,tblNews_am等)来存储Enlish或Amharic语言的内容。

现在我有一些类可以检索最新的新闻,但是我希望对这些类进行概括,并检索用户请求的特定文化的最新消息。最初我有类似以下的内容,只能从tblNews_EN表中检索最新消息。

public IQueryable<GetNews> GetTopExtraNews()
 {

        var topExtraNews = from p in db.GetNews
                           where p.TopOrderPriority == 2
                           orderby p.NewsDate descending
                           select p;
        return topExtraNews;
}

这里GetNews是我的实体类,对应于tblNews_EN表。

现在我想概括这个,以便它将根据所选的文化返回不同表中的对象。我尝试使用类似IQueryable的东西,但我不认为这是处理我的情况的最佳选择。那么,还有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

如果我理解的话,你所有的桌子都有相同的结构。

基于此,只需将表作为参数发送到您的方法,并将此参数用于您的查询:

public IQueryable<GetNews> GetTopExtraNews(typeofYourTable myTable)
{

        var topExtraNews = from p in myTable
                           where p.TopOrderPriority == 2
                           orderby p.NewsDate descending
                           select p;
        return topExtraNews;
}

当然,在调用方法之前,必须将myTable参数设置为正确的语言表。