如果找不到此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
}
请帮助
答案 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
};
说明:
LikeID
是int?
,表示它是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