الحاق Collectionها به رشته‌ها در دات‌نت ۴.۵

تا پیش از ارائه دات‌نت ۴.۵ برای الحاق رشته با استفاده از کاما (comma-delimited) مجبور به استفاده از حلقه for یا foreach و استفاده از StringBuilder و... بودیم. برای مثال کلاس زیر را در نظر بگیرید:

public class Person
    {
        public int Id { get; set; }

        public string FirstName { get; set; }

        public string SureName { get; set; }

        public List<Person> CreatePeople()
        {
            return new List<Person>
            {
                new Person {Id = 0, FirstName = "Mohsen", SureName = "Aghamohammadi"},
                new Person {Id = 1, FirstName = "Ali", SureName = "Ahmadi"},
                new Person {Id = 2, FirstName = "Reza", SureName = "Saeidi"}
            };
        }
    }

تا پیش از دات‌نت ۴.۵ در صورتی که قصد داشتیم لیست نام افراد موجود در این لیست را با کاما از یکدیگر جداکنیم باید از روشی شبیه به روش زیر استفاده می‌کردیم:

 class Program
    {
        static void Main(string[] args)
        {
            var people = new Person().CreatePeople();
            var sb = new StringBuilder();
            foreach (var person in people)
            {
                if(sb.Length>0)
                    sb.Append(',');

                sb.Append(person.FirstName);
            }
        }
     }

با ارائه دات‌نت ۴.۵ و با استفاده از عبارت lambda و کلاس String.Join می‌توان این کار را ساده‌تر و بدون استفاده از کلاس StringBuilder و موارد مشابه نیز انجام داد:

class Program
    {
        static void Main(string[] args)
        {
            var people = new Person().CreatePeople();
            var res = String.Join(",", people.Select(c => c.FirstName));

            Console.WriteLine(res);
            Console.ReadKey();
        }
    }

در نهایت خروجی به‌ شکل زیر خواهد شد:

  • Book.mark.hu
  • co.mments
  • De.lirio.us
  • del.icio.us
  • Digg
  • DotNetKicks
  • E-Mail
  • Facebook
  • feedmelinks
  • Google
  • LinkedIn
  • msdn Social
  • MyShare
  • Slashdot
  • StumbleUpon
  • TwitThis
  • Tumblr
  • Yahoo! Buzz
  • Yahoo! MyWeb
  • Print
امکان ارسال نظر برای این موضوع وجود ندارد