2010-04-01 2 views
1
public IQueryable<ArticleDisplay> SearchNumberOfArticles(int articleNr, string order) 
     var result = (
        from category in db.ArticleCategories 
        join article in db.Articles on category.CategoryID equals article.CategoryID       
        orderby article.Date order 
        select new ArticleDisplay 
        { 
         CategoryID = category.CategoryID, 
         CategoryTitle = category.Title, 

         ArticleID = article.ArticleID, 
         ArticleTitle = article.Title, 
         ArticleDate = article.Date, 
         ArticleContent = article.Content 
        } 
        ).Take(articleNr); 

PHP에서는 이것이 작동하지만 C#에서는 그렇지 않습니다. 그럼, 어떻게 변수에서 키워드를로드하고 "인쇄"쿼리 안에? 여기 orderdescending 또는 ascending으로 대체 될 것입니다. 내가 .Take으로 쿼리를 제한하는 경우 감사변수에서 LINQ-to-SQL로드 키워드

답변

1

당신은() if 문

IQueryable<ArticleDisplay> SearchNumberOfArticles(int articleNr, string order) 
{ 
    ................ 
    var articles = from category in db.ArticleCategories 
        join article in db.Articles 
        on category.CategoryID equals article.CategoryID 
        select article; 

    if (string.IsNullOrEmpty(order) || order == "ascending" || order = "asc") 
    { 
     articles = articles.OrderBy(a => a.Date).Take(articleNr); 
    } 
    else 
    { 
     articles = articles.OrderByDescending(a => a.Date).Take(articleNr); 
    } 
    ............. 
} 
+0

경우이 작동하지 않을 수 있습니다. 내 쿼리에 추가하는 것을 잊어 버렸습니다. (지금 편집 됨) –

+1

테이크를 어디에 넣었습니까? (편집) – SteadyEddi

+0

좋아, 이건 잘되고있어. 감사! –