将ID的0分配为Null值

时间:2019-02-21 08:29:36

标签: c# linq

如果找不到此Linq查询的记录,有人可以帮助我分配0值。当前我返回的是null,但是如果它为null,则需要分配0。

//Linq Query
var ideasQuery = from b in db.StarLive_StarIBox_Ideas.Where(b => b.UserId == userid)
                         select new IdeasDTO()
                         {
                             IdeaId = b.IdeaId,
                             Idea = b.Idea,
                             UserName = b.StarLive_Sys_Users.cLogName,
                             DatePosted = b.DatePosted.ToString(),
                             Problem = b.StarLive_StarIBox_Problems.Problems,
                             Department = b.StarLive_Sys_Users.nDeptID.ToString(),
                             LikeId=b.StarLive_StarIBox_Likes.Where
                             (l=>l.IdeaId==b.IdeaId && l.LikedBy==b.UserId).FirstOrDefault().LikeID


                    };

//DTO Class
public class IdeasDTO
{
    [DataMember]
    public int IdeaId { get; set; }

    [DataMember]
    public string UserName { get; set; }

    [DataMember]
    public string Idea { get; set; }

    [DataMember]
    public string DatePosted { get; set; }

    [DataMember]
    public string Problem { get; set; }

    [DataMember]
    public int Likes { get; set; }

    [DataMember]
    public bool Liked { get; set; }

    [DataMember]
    public string Department { get; set; }

    [DataMember]
    public int? LikeId { get; set; }
}

//邮递员回复

{
        "IdeaId": 21,
        "UserName": "Gowthamb",
        "Idea": "This is an Idea",
        "DatePosted": "Feb 14 2019  3:19PM",
        "Problem": "Problem 1",
        "Likes": 0,
        "Liked": false,
        "Department": "1",
        "LikeId": null
    }

请帮助

2 个答案:

答案 0 :(得分:1)

更改此:

//Linq Query
var ideasQuery = from b in db.StarLive_StarIBox_Ideas.Where(b => b.UserId == userid)
                         select new IdeasDTO()
                         {
                             IdeaId = b.IdeaId,
                             Idea = b.Idea,
                             UserName = b.StarLive_Sys_Users.cLogName,
                             DatePosted = b.DatePosted.ToString(),
                             Problem = b.StarLive_StarIBox_Problems.Problems,
                             Department = b.StarLive_Sys_Users.nDeptID.ToString(),
                             LikeId=b.StarLive_StarIBox_Likes.Where
                             (l=>l.IdeaId==b.IdeaId && l.LikedBy==b.UserId).FirstOrDefault().LikeID


                    };

对此:

//Linq Query
var ideasQuery = from b in db.StarLive_StarIBox_Ideas.Where(b => b.UserId == userid)
                         select new IdeasDTO()
                         {
                             IdeaId = b.IdeaId,
                             Idea = b.Idea,
                             UserName = b.StarLive_Sys_Users.cLogName,
                             DatePosted = b.DatePosted.ToString(),
                             Problem = b.StarLive_StarIBox_Problems.Problems,
                             Department = b.StarLive_Sys_Users.nDeptID.ToString(),
                             LikeId=b.StarLive_StarIBox_Likes.Where
                             (l=>l.IdeaId==b.IdeaId && l.LikedBy==b.UserId).FirstOrDefault().LikeID ?? 0


                    };

说明:

LikeIDint?,表示它是nullable

??运算符,意味着如果结果为null,则必须在右边分配值,在这种情况下为0

LikeId=b.StarLive_StarIBox_Likes.Where(l=>l.IdeaId==b.IdeaId && l.LikedBy==b.UserId).FirstOrDefault().LikeID ?? 0

答案 1 :(得分:0)

您可以这样写 将LikeId=b.StarLive_StarIBox_Likes更改为LikeId=b.StarLive_StarIBox_Likes == null ? 0 : b.StarLive_StarIBox_Likes