2016-08-04 56 views
0

我想提出一个观点,即通过一种列显示表的顺序:Asp.Net CONCAT表,使他们通过正确排序C#LINQ

VIEW:

@*<a href="@Url.Action("Index", new { filtro = "plantacao comeca", ordem 
= "desc"})"><span class="glyphicon glyphicon-plus-sign"></span></a> 
     <a href="@Url.Action("Index", new { filtro = "plantacao comeca", ordem = "asc"})"><span class="glyphicon glyphicon-minus-sign"></span></a>*@ 

控制器:

case "plantacao comeca": 
    var january = artigo.Where(a => a.plantacaoComeca == "January"); 
    var february = artigo.Where(a => a.plantacaoComeca == "February"); 

    // and so on and so one 
    // I whant to contact this tables in order where !!! 
    break; 

所以我想知道如何搭配这张桌子,或者用不同的字符串或数字来排列它们,或者是以往的.....

+0

是否可以改变你的模型的'plantacaoComeca'到一个'int'并使用月份编号?这对GroupBy()和OrderBy()来说更容易。然后你可以将'int'转换成月份字符串来显示它。 –

回答

0

将月份的字符串表示形式转换为DateTime,然后OrderBy它。最后,因为新SortValue是不相关的输出我添加了一个select

var sortedByMonths = artigo 
    .Select(item => new { Item = item, SortValue = DateTime.ParseExact(item.plantacaoComeca , "MMMM", CultureInfo.InvariantCulture) }) 
    .OrderBy(item => item.SortValue) 
    .Select(item => item.Item) 
    .ToList(); 

您还可以使用WhereConcat(但我认为这是过去那么好):

var january = artigo.Where(a => a.plantacaoComeca == "January"); 
var february = artigo.Where(a => a.plantacaoComeca == "February"); 

january.Concat(february).Concat(....) 
+0

@ user2278362 - 它有助于您解决问题吗?这个问题还没解决吗? –

+0

是的坦克你我工作的魅力 – user2278362

+0

好。很高兴听到:) –

0

Where合并成一个查询有什么问题?

var januaryFebruary = artigo.Where(
    a => a.plantacaoComeca == "January" 
     || a.plantacaoComeca == "February"); 
+0

最好的解决方案和最简单的... – user2278362