[英]C# - How to get item from the list with complex type
我是c#的新手,并且列表有问题。
我有一个班级消息:
public class Message
{
public int MessageId { get; set; }
public DateTime CreatedDate { get; set; }
public string Text { get; set; }
public string Autor { get; set; }
public string Source { get; set; }
}
和类MessageHandler:
class MessageHandler
{
private List<Message> _dummyMessages = new List<Message>()
{
new Message(){
MessageId = 1,
CreatedDate = new DateTime(2014, 5, 27),
Text = "Srpska vodoprivreda...",
Autor = "Marko Markovic",
Source = "Twitter"
},
new Message(){
MessageId = 2,
CreatedDate = new DateTime(2014, 5, 27),
Text = "Aerodrom Beograd...",
Autor = "Zoran Zoric",
Source = "B92"
}
};
public List<Message> GetLatestMessages(int nrMessagesToReturn)
{
List<Message> retVal;
retVal = this._dummyMessages.GetRange(0, nrMessagesToReturn);
return retVal;
}
//todo: Search list _dummyMessages and get Source and
//check is it equal to "Twitter"
}
我的问题是我不知道如何从List<Message>
获取Source :(我开始是这样的:
public List<Message> SearchBySource()
{
List<Message> retVal;
foreach (Message m in _dummyMessages)
{
//..........
}
return retVal;
}
但是如何从消息中获取Source?
我想从消息中获取Source然后检查它是否是“Twitter”,因为我想从我的列表中计算所有“Twitter”来源...
抱歉愚蠢的问题,谢谢你的帮助!!
var count = _dummyMessages.Count(m => m.Source == "Twitter");
参考: http : //code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
试试这个:
List<Message> retVal;
foreach (Message m in _dummyMessages)
{
// Check if the message's source is twitter
if(Message.Source=="Twitter")
retVal.Add(Message);
}
return retVal;
或者使用LINQ:
return _dummyMessages.Where(x=>x.Source=="Twitter").ToList();
上面的两个代码示例都将放在SearchBySource()
方法的主体中。
我要提出的一个建议是你使用一个参数,如下所示:
public List<Message> SearchBySource(string source)
{
return _dummyMessages.Where(x=>x.Source==source).ToList();
}
为了使你的方法更有意义。 您正在按来源进行搜索,因此您必须提供来源。
Source
是您班级中的公共财产,这意味着您可以直接访问它:
public List<Message> SearchBySource(string source)
{
List<Message> retVal = new List<Message>();
foreach (Message m in _dummyMessages)
{
if(source == m.Source)
retVal.Add(m);
}
return retVal;
}
您还可以将List.Find
与谓词一起使用:
List<Message> retVal = _dummyMessages.Find(m => m.Source == source);
另一种选择是使用LINQ来计算source =“Twitter”的所有消息:
int countTwitter = _dummyMessages.Count(m => m.Source == "Twitter");
或者返回包含所有包含source =“Twitter”的邮件的列表:
List<Message> retVal = _dummyMessages.Where(m => m.Source == "Twitter").ToList();
class Program
{
public static List<Message> SearchBySource()
{
MessageHandler msg = new MessageHandler();
List<Message> msgContent = msg.GetLatestMessages(1);
return msgContent;
}
static void Main(string[] args)
{
List<Message> mymess = SearchBySource();
foreach (Message m in mymess)
{
Console.WriteLine(m.Source);
}
Console.ReadLine();
}
Code获取第一个条目的示例,返回Twitter。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.