2014-06-08 2 views
-2

나는이 다음 코드 :반환되는 항목 수를 가져 오는 방법은 무엇입니까?

Tweet.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace Assign3_Twitter 
{ 
    public class Tweet 
    { 
     public string HashTag { get; private set; } 
     public string Message { get; private set; } 
     public string Sender { get; private set; } 
     public string Recipient { get; private set; } 
     public Tweet (string sender, string message, string hashtag, string reciepient) 
     { 
      this.Sender = sender; 
      this.HashTag = hashtag; 
      this.Message = message; 
      this.Recipient = reciepient; 
     } 

     public override string ToString() 
     { 
      return string.Format ("==========\nTweet\n==========\nFrom: {2} To: {3} Message: {1} Hashtag: {0}", HashTag, Message, Sender, Recipient); 
     } 
    } 
} 

TweetManager.cs 나는하여 SeeHashTag() 메소드에 다음과 같은 무언가를 달성하고자하는

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
namespace Assign3_Twitter 
{ 
    public class TweetManager 
    { 
     private List<Tweet> tweets = new List<Tweet>(); 

     public TweetManager() 
     { 
      Tweet tw1 = new Tweet ("Austen", "Hello World!", "#Hey", "Twitter"); 
      tweets.Add (tw1); 
      Tweet tw2 = new Tweet ("Test1", "Hello World! x2", "#Howdy", "Tweeter"); 
      tweets.Add (tw2); 
      Tweet tw3 = new Tweet ("Test2", "Hello World! x3", "#Hey", "Twitter"); 
      tweets.Add (tw3); 
      Tweet tw4 = new Tweet ("Test3", "Hello World! x4", "#Howdy", "Tweeter"); 
      tweets.Add (tw4); 
      Tweet tw5 = new Tweet ("Test4", "Hey there!", "#Hey", "Twitter"); 
      tweets.Add (tw5); 
      Tweet tw6 = new Tweet ("Test5", "Woah this is cool!", "#Howdy", "Tweeter"); 
      tweets.Add (tw6); 
      Tweet tw7 = new Tweet("Test 6", "Neat!", "#Hey", "Austen"); 
      tweets.Add(tw7); 

     } 

     public void SeeAllTweeters() 
     { 

      Console.WriteLine("==================================\nViewing all tweets \n==================================\n"); 

      foreach (Tweet Tweets in tweets) 
      { 
       Console.WriteLine(Tweets); 
      } 
     } 

     public void SeeHashTag(string hashtag) 
     { 
      Console.WriteLine("==================================\nViewing all tweets containing the hashtag: " + hashtag + "\n==================================\n"); 
      foreach (Tweet Tweets in tweets) 
      { 
       if (Tweets.HashTag == hashtag) 
       { 
        Console.WriteLine(Tweets); 
       } 
      } 
     } 

Console.WriteLine("==================================\nViewing x number of tweets containing the hashtag: " + hashtag + "\n==================================\n"); 

여기에는 수의 수를 계산합니다. g가 반환되었습니다. 나는 이것을하는 방법에 대해 너무 확신하지 못한다!

어떤 도움이 크게 감사합니다, 감사합니다 :)

답변

1

당신은 해시 태그 모든 트윗의 빠른 쿼리를 수행 할 LINQ Count()를 사용할 수 있습니다.

List<Tweet> tweetsWithHashtag = tweets.Where(x => x.HashTag == hashtag).ToList(); 

다음 해시 태그와 함께 트윗의 수를 얻을 수 tweetsWithHashtag.Count를 사용

var tweetCount = tweets.Count(t => t.HashTag == hashtag); 
Console.Writeline(String.Format("Viewing {0} number of tweets containing the hashtag {1}", 
    tweetCount, hashtag)); 
1
public void SeeHashTag(string hashtag) 
{ 
    int numHashes = 0; 
    string tweets = String.Empty; 
    foreach (Tweet Tweets in tweets) 
    { 
     if (Tweets.HashTag == hashtag) 
     { 
      tweets += hashtag + '\n'; 
      numHashes++; 
     } 
    } 
    Console.WriteLine("==================================\nViewing " + numHashes + "tweet" + numHashes == 1? "":"s" + " containing the hashtag: " + hashtag + "\n==================================\n"); 
    Console.Write(tweets); 
} 
1

먼저 목록을 필터링 :이 같은 뭔가가 될 것입니다. 또한 for 루프에도 tweetsWithHashtag을 사용할 수 있습니다.

0

매우 늦은 답장을 드려 죄송합니다 ... 내 힘이 나갔습니다. 나는 이미 답변을 작성하여 어쨌든 게시 할 것입니다 ...

우선 foreach 루프 대신 for 루프를 사용해야합니다. for 루프가 foreach 루프보다 빠릅니다.

The fact that for is more efficient than foreach results from the fact that foreach is using an enumerator object behind the scene.

패트릭 Smacchia의 Blog:에서이 복사 그래서 나는 당신의 SeeHashTag() 방법에서 for 루프를 사용하여 foreach 루프를 대체했다.

public void SeeHashTag(string hashtag) 
{ 
    Console.WriteLine("==================================\nViewing all tweets containing the hashtag: " + hashtag + "\n==================================\n"); 
    for (int x = 0; x < tweets.Count; x++) 
    { 
     if (tweets[x].HashTag == hashtag) 
     { 
      Console.WriteLine(tweets[x]); 
     } 
    } 
    Console.WriteLine("Total Number of tweets:" + tweets.Count(tw => tw.HashTag == hashtag)); 
} 
관련 문제