C#-如何从复杂类型的列表中获取项
我是c#新手,对列表有问题 我有一条课堂信息:C#-如何从复杂类型的列表中获取项,c#,list,search,C#,List,Search,我是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; } } 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; }
}
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"
}
和类MessageHandler:
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; }
}
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"
}
class消息处理程序
{
私有列表_dummyMessages=新列表()
{
新消息(){
MessageId=1,
CreatedDate=新日期时间(2014年5月27日),
Text=“斯普斯卡伏特加……”,
Autor=“Marko Markovic”,
Source=“Twitter”
},
新消息(){
MessageId=2,
CreatedDate=新日期时间(2014年5月27日),
Text=“Aerodrom Beograd…”,
Autor=“Zoran Zoric”,
Source=“B92”
}
};
公共列表GetLatestMessages(int nrMessagesToReturn)
{
列表检索;
retVal=this.\u dummyMessages.GetRange(0,nrMessagesToReturn);
返回返回;
}
//todo:搜索列表\u dummy消息并获取源和
//检查它是否等于“Twitter”
}
我的问题是我不知道如何从列表中获取源代码(我是这样开始的:
public List<Message> SearchBySource()
{
List<Message> retVal;
foreach (Message m in _dummyMessages)
{
//..........
}
return retVal;
}
publicslist SearchBySource()
{
列表检索;
foreach(消息m在_dummy消息中)
{
//..........
}
返回返回;
}
但如何从消息中获取源呢
我想从消息中获取来源,然后检查它是否是“Twitter”,因为我想从我的列表中统计所有“Twitter”来源
很抱歉提出这个愚蠢的问题,谢谢你的帮助!!试试这个:
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;
上述两个代码示例都将放在SearchBySource()方法的主体中
我必须提出的一个建议是使用一个参数,如下所示:
public List<Message> SearchBySource(string source)
{
return _dummyMessages.Where(x=>x.Source==source).ToList();
}
公共列表SearchBySource(字符串源)
{
返回_dummyMessages.Where(x=>x.Source==Source.ToList();
}
为了让你的方法更有意义,你是在按来源搜索,所以你必须提供来源
var count = _dummyMessages.Count(m => m.Source == "Twitter");
ref: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;
}
另一个选项是使用LINQ统计source=“Twitter”的所有消息:
或返回包含所有包含source=“Twitter”的消息的列表:
List retVal=\u dummymmessages.Where(m=>m.Source==“Twitter”).ToList();
课程计划
{
公共静态列表SearchBySource()
{
MessageHandler msg=newmessagehandler();
List msgContent=msg.GetLatestMessages(1);
返回msgContent;
}
静态void Main(字符串[]参数)
{
List mymess=SearchBySource();
foreach(mymess中的消息m)
{
控制台写入线(m.Source);
}
Console.ReadLine();
}
获取第一个条目的代码示例返回Twitter。使用linq dummyMessages.Where(x=>x.Source==“Twitter”).ToList();鉴于上面的代码片段,我不明白您为什么要问这个问题。这是关于最基本的知识(您实际上似乎拥有这些知识)。此外:您使用的是Visual Studio吗?您知道Intellisense吗?请在您的foreach中尝试一下:m.kostas是正确的,但您可以直接这样调用count方法:\u dummyMessages.Where(obj=>obj.Source==“Twitter”).count();
@Koryu:directly是\u dummyMessages.count(obj=>obj.Source==“Twitter”)
@Tim true.嗯,有这么多的可能性:)
int countTwitter = _dummyMessages.Count(m => m.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();
}