¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¥¸¥§¥Í¥ê¥Ã¥¯¤ò»È¤Ã¤¿LINQ¤Î»ÈÍÑË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
¡¡¤Þ¤º¡¢°Ê²¼¤Î¤è¤¦¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤½¤ì¤ò¼ÂÁõ¤·¤¿£²¤Ä¤Î¥¯¥é¥¹¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
public interface IAnimal
{
string Name { get; set; }
string Speak();
}
public class Dog : IAnimal
{
public string Name { get; set; }
public string Speak()
{
return "Woof!";
}
}
public class Cat : IAnimal
{
public string Name { get; set; }
public string Speak()
{
return "Meow!";
}
}
¡¡¤³¤Î¤È¤¡¢°Ê²¼¤Î¤è¤¦¤ËIAnimal¤Î¥ê¥¹¥È¤òºî¤ê¡¢¤½¤ÎÃæ¤ËDog¤ÈCat¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò
º®ºß¤µ¤»¤ÆÆþ¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
List<IAnimal> animals = new List<IAnimal>
{
new Dog { Name = "Rover" },
new Cat { Name = "Whiskers" },
new Dog { Name = "Spot" }
};
¡¡¤³¤ì¤Ï¡¢IAnimal ·¿¤Î List ¤Ç¤¢¤ë¤¿¤á¡¢
IAnimal ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Ç¤¢¤ì¤Ð List ¤ËÊÝ»ý¤Ç¤¤ë¤¿¤á¤Ç¤¹¡£
¡¡
¡¡¤½¤Î¤¿¤á¡¢
¥¯¥é¥¹¤òÆÃÄꤻ¤º¡¢ÈÆÍÑÀ¤Î¤¢¤ë´ÉÍý¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤·¤Æ¡¢OfType¥á¥½¥Ã¥É¤ò»È¤¦¤È¡¢¤³¤Î¥ê¥¹¥È¤«¤é
ÆÃÄê¤Î·¿¤ÎÍ×ÁǤÀ¤±¤òÃê½Ð¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡°Ê²¼¤Ï¡¢OfType¤ò»È¤Ã¤ÆDog¤Î¤ß¤òÃê½Ð¤¹¤ëÎã¤Ç¤¹¡£
List<Dog> dogs = animals.OfType<Dog>().ToList();
¡¡¤³¤Î½èÍý¤Ë¤è¤ê¡¢List Æâ¤Ëº®ºß¤·¤Æ¤¤¤ë Animal ¤Î¤¦¤Á¡¢Dog ¤À¤±¤òÃê½Ð¤·¤¿ List ¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤Þ¤¿¡¢Select¤ò»È¤Ã¤Æ
ÆÃÄê¤Î°À¤òÃê½Ð¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£°Ê²¼¤ÎÎã¤Ç¤Ï¡¢Á´¤Æ¤Îưʪ¤Î̾Á°¤òÃê½Ð¤·¤Æ¤¤¤Þ¤¹¡£
List<string> names = animals.Select(animal => animal.Name).ToList();
¡¡¤³¤Î¤è¤¦¤Ë¡¢LINQ¤Ï¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¥¸¥§¥Í¥ê¥Ã¥¯¤ò»È¤Ã¤Æ¡¢
°Û¤Ê¤ë·¿¤ÎÍ×ÁǤò»ý¤Ä¥ê¥¹¥È¤«¤éÆÃÄê¤Î·¿¤ÎÍ×ÁǤÀ¤±¤òÃê½Ð¤·¤¿¤ê¡¢
ÆÃÄê¤Î°À¤òÃê½Ð¤·¤¿¤ê¤¹¤ë½èÍý¤òÍưפ˽ñ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥³¡¼¥É¤ÎºÆÍøÍÑÀ¤È½ÀÆðÀ¤¬¹â¤Þ¤ê¤Þ¤¹¡£