var top100 = (from m in _messages
where m.IsSent == false
select m).Take(100);
foreach (var message in top100)
{
message.IsSent = _sms.SendSMS(message.Source, message.Destination, message.TextMessage);
}
var count = _messages.Count(x => x.IsSent);
我不明白为什么变量count等于0。我本以为我正在使用对消息对象的引用,但是如果count为0,是否表示我正在使用副本?我究竟做错了什么?
最佳答案
我只是尝试调查您的问题,但没有重现它,因此让我怀疑您的IsSent是否实际上是错误的,这就是为什么您得到结果。
void Main()
{
var top100 = (from m in Messages where m.IsSent == false select m).Take(100);
foreach (var message in top100) {
message.IsSent = true;
}
var count = Messages.Count(x => x.IsSent);
Console.WriteLine(count);
}
List<Message> Messages {
get {
if(_messagesList == null) {
_messagesList = new List<Message>();
for (int i = 0; i < 100; i++)
_messagesList.Add(new Message { IsSent = false });
}
return _messagesList;
}
}
List<Message> _messagesList;
class Message {
public bool IsSent { get; set; }
}
输出为
100
关于c# - Linq返回对象的副本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12682669/