【问题标题】:Asp.Net concat tables so they order by correctly C# LINQAsp.Net concat 表,以便它们按正确的 C# LINQ 排序
【发布时间】:2025-12-09 10:15:02
【问题描述】:

我正在制作一个按某种列显示表格顺序的视图:

查看:

@*<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;

所以我想知道如何连接这些表或用不同的字符串或数字对它们进行排序......

【问题讨论】:

  • 是否可以将模型的 plantacaoComeca 更改为 int 并改用月份编号?这对GroupBy()OrderBy() 来说会容易得多。然后您可以将int 转换为月份字符串以显示它。

标签: c# mysql asp.net visual-studio linq


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    将月份的字符串表示形式转换为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(....)
    

    【讨论】:

    • @user2278362 - 它帮助您解决问题了吗?这个问题还没有解决吗?
    • 好。很高兴听到:)
    • @user2278362 - 请考虑投票并标记为已解决:)