[c#]Linq 选择子串在列的值有 1

标签: sql Linq C#
发布时间: 2017/2/28 22:34:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我这里有日程安排表,然后我想要到这一结果与行选择此表

Code    Days
CS1     MT           AS Monday and Tuesday
CS2     WTH          AS Wednesday and Tuesday
ENG1    MWF          AS Monday, Wednesday and Friday
ENG1    SAT1         AS Saturday 1

我已尽了这 linq 我的结果是这样的

enter image description here

使用 Linq

from a in Schedules
select new 
{
    a.ScheduleID,
    a.ScCode,
    Days = a.Mon == 1 ? "M" : a.Tue == 1 ? "T" : a.Wed == 1 ? "W" : a.Thu == 1 ? "TH" : a.Fri == 1 ? "F" : a.Sat == 1 ? "SAT" : a.Sun == 1 ? "SUN" : "NO SCHEDULE"
}

这让我失望。

任何人都有这想法?iv'e 编写的材料在这里http://sqlfiddle.com/# ! 3/5ef5d/1

谢谢你。

解决方法 1:

虽然我部分同意 @shoe 的设计最有可能是最大的问题部分,我也相信在满足他们在哪里的人和帮助他们,因为他们是。也就是说,这里是你的答案︰

from a in Schedules
select new
{
    a.ScheduleID,
    a.ScCode,
    Days = GetDays(a)
};

你正在寻找位于下面的方法︰

private string GetDays(Schedule schedule)
{
    var stringBuilder = new StringBuilder();

    if (schedule.Mon == 1)
    {
        stringBuilder.Append("M");
    }

    if (schedule.Tue == 1)
    {
        stringBuilder.Append("T");
    }

    if (schedule.Wed == 1)
    {
        stringBuilder.Append("W");
    }

    if (schedule.Thu == 1)
    {
        stringBuilder.Append("TH");
    }

    if (schedule.Fri == 1)
    {
        stringBuilder.Append("F");
    }

    if (schedule.Sat == 1)
    {
        stringBuilder.Append("SAT");
    }

    if (schedule.Sun == 1)
    {
        stringBuilder.Append("SUN");
    }

    if (schedule.Mon1 == 1)
    {
        stringBuilder.Append("M1");
    }

    if (schedule.Tue1 == 1)
    {
        stringBuilder.Append("T1");
    }

    if (schedule.Wed1 == 1)
    {
        stringBuilder.Append("W1");
    }

    if (schedule.Thu1 == 1)
    {
        stringBuilder.Append("TH1");
    }

    if (schedule.Fri1 == 1)
    {
        stringBuilder.Append("F1");
    }

    if (schedule.Sat1 == 1)
    {
        stringBuilder.Append("SAT1");
    }

    if (schedule.Sun1 == 1)
    {
        stringBuilder.Append("SUN1");
    }

    if (stringBuilder.Length == 0)
    {
        stringBuilder.Append("NO SCHEDULE");
    }

    return stringBuilder.ToString();
}
赞助商