我有以下课程:
public class QualifyResponse
{
public Message[] MessageList{get; set;}
}
public class Message
{
public MessageDetail[] MessageDetailList{get; set;}
public string MessageStatus{get; set;}
public string ProviderCode{get; set;}
}
public partial class MessageDetail
{
public string MessageCategory{get; set;}
public string MessageCode{get; set;}
public string MessageSeverity{get; set;}
public string MessageText{get; set;}
}
我想要的是,对于所有MessageDetailList,如果messageCode等于“status”,则在此查询后将其messageText值指定为“Complete”
我尝试了以下LINQ,但它没有工作,即具有MessageCode =“status”的MessageDetailList对象没有MessageText =“Complete”。
response.MessageList.FirstOrDefault()
.MessageDetailList
.Where(message => message.MessageCode
.ToLower()
.Equals("status"))
.ToList()
.ForEach(status =>
{
status.MessageText = "Complete";
});
我做错了什么?
答案 0 :(得分:0)
一些格式化有助于阅读您的代码
然而,这应该有助于并仔细检查结果
请注意,如果您的
Where
条款正确,将更新您的MessageText
提供没有一些时髦的二传手
var message = response.MessageList.FirstOrDefault();
var messageDetails = message.MessageDetailList
.Where(message => message.MessageCode.ToLower() == "status")
.ToList();
messageDetails.ForEach(status => status.MessageText = "Complete");
messageDetails.ForEach(status => Debug.WriteLine(status.MessageText));
更新
这一切都应该可以正常工作
foreach
而不是我们不知道您如何检查结果