如何使用 Linq select 第一个列表项为 null

How to select first list item to null using Linq

你好,我有一个下拉列表,我正在尝试将第一个列表项的值设置为 null,并将文本设置为“---”,因此当从下拉列表中选择“---”时,值将为空,因此在 .aspx 页面中使用 Sql 数据源成功执行此操作

 <asp:SqlDataSource ID="sqsGetAllJobs" runat="server" 
                            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                            SelectCommand=" SELECT Null [JOB_ID], '---' [JOB]
                            UNION
                            SELECT distinct [JOB_ID],[JOB] FROM [TNA].[vu_Position] where [JOB_ID] is not null and [JOB] is not null order by 2"></asp:SqlDataSource>

但我想使用 linq 查询来执行此操作,我已经尝试了所有方法,但什么都没有,所以请提供帮助..

你可以尝试这样的事情:

List<string> list = new List<string> {"1.5","2.5","3.1","4.2","" };

var a = (
    from aa in list
    select  string.IsNullOrEmpty( aa) ? null : aa
    );

希望对您有所帮助,如果您在创建列表项方面需要更多帮助,请问我。

使用此 class 和数据作为数据库实际架构/数据的模型:

class vu_Position
{
    public int? JOB_ID { get; set; }
    public string JOB { get; set; }
}

List<vu_Position> Positions = new List<vu_Position>
{
    new vu_Position { JOB_ID = null, JOB = "A"},
    new vu_Position { JOB_ID = 1, JOB = "B"},
    new vu_Position { JOB_ID = 2, JOB = "C"},
    new vu_Position { JOB_ID = 3, JOB = null}
};

这是模仿您的 SqlDataSource:

SelectCommand 的 linq 查询版本
 var selectedJobs = (from j in new List<vu_Position>() 
                               { 
                                 new vu_Position() { JOB_ID = null, JOB = "---" } 
                               }
                     select j)

                     .Union    

                     (from j in Positions
                      where j.JOB_ID != null && j.JOB != null
                      orderby j.JOB
                      select j);

输出: