κΉμ μ
νμΈλνκ΅ 22νλ² μ»΄ν¨ν°κ³΅νκ³Ό
νμΈλνκ΅ 22νλ² μ»΄ν¨ν°κ³΅νκ³Ό
κ²μμ κ°λ°ν λ, νλ μ΄μ΄μ μ€ν―, λͺ¬μ€ν°μ λ₯λ ₯μΉ, μμ΄ν μ κ°μΉ λ± μλ§μ λ°μ΄ν°μ νκ· κ°, ν©κ³, κ°μ λ±μ κ³μ°ν΄μΌ ν νμκ° μμ΅λλ€. LINQμ μ§κ³ ν¨μλ μ΄λ¬ν ν΅κ³ κ³μ°μ λ§€μ° κ°κ²°νκ² μ²λ¦¬ν΄ μ€λλ€.
Average()λ 컬λ μ
λ΄μ μ«μ κ°λ€μ μ°μ νκ· μ κ³μ°ν λ μ¬μ©λ©λλ€.
public class Unit
{
public string Name { get; set; }
public int AttackPower { get; set; }
}
List<Unit> partyMembers = new List<Unit>
{
new Unit { Name = "Knight", AttackPower = 85 },
new Unit { Name = "Archer", AttackPower = 60 },
new Unit { Name = "Mage", AttackPower = 95 }
};
// νν°μλ€μ νκ· κ³΅κ²©λ ₯ κ³μ°
double averageAttack = partyMembers.Average(unit => unit.AttackPower);
// κ²°κ³Ό: averageAttack = 80.0
Sum()μ 컬λ μ
λ΄μ μ«μ κ°λ€μ **λͺ¨λ λν κ°(ν©κ³)**μ κ³μ°ν©λλ€.
public class Resource
{
public string Type { get; set; }
public int Quantity { get; set; }
}
List<Resource> playerResources = new List<Resource>
{
new Resource { Type = "Wood", Quantity = 150 },
new Resource { Type = "Stone", Quantity = 90 },
new Resource { Type = "Gold", Quantity = 35 }
};
// νλ μ΄μ΄κ° 보μ ν μμμ μ΄ κ°μ
int totalQuantity = playerResources.Sum(r => r.Quantity);
// κ²°κ³Ό: totalQuantity = 275 (150 + 90 + 35)
Count() λλ LongCount()λ 컬λ μ
λ΄μ μμ κ°μλ₯Ό μΈκ±°λ, νΉμ 쑰건μ λ§μ‘±νλ μμμ κ°μλ₯Ό μ
λ μ¬μ©λ©λλ€.
public class Quest
{
public string Title { get; set; }
public bool IsCompleted { get; set; }
}
List<Quest> questLog = GetCurrentQuests();
// 1. μ 체 νμ€νΈ κ°μ
int totalQuests = questLog.Count();
// 2. λ―Έμλ£ μνμΈ νμ€νΈμ κ°μ (Where νν°λ§κ³Ό λμΌν ν¨κ³Ό)
int incompleteQuests = questLog.Count(q => q.IsCompleted == false);
// κ²°κ³Ό μμ: totalQuests = 8, incompleteQuests = 3
Count() vs. Any()μμ μΈκΈνλ―μ΄, κ²μ κ°λ°μμλ μ±λ₯μ΄ λ§€μ° μ€μν©λλ€.
Count(): μ νν κ°μλ₯Ό μΈμΌ ν λ μ¬μ©ν©λλ€. 컬λ μ
μ 체λ₯Ό μνν΄μΌ ν©λλ€.Any(): βνλλΌλ μ‘΄μ¬νλμ§β μ¬λΆλ§ νμΈν λ μ¬μ©ν©λλ€. 쑰건μ λ§λ 첫 λ²μ§Έ μμλ₯Ό μ°Ύλ μ¦μ κ²μμ λ©μΆκΈ° λλ¬Έμ Count()λ³΄λ€ ν¨μ¬ λΉ λ¦
λλ€.μ‘΄μ¬ μ¬λΆλ§ νμνλ€λ©΄, λ°λμ Any()λ₯Ό μ¬μ©νμΈμ.
// λΉν¨μ¨μ : Count()λ₯Ό 0κ³Ό λΉκ΅ (μ 체 μν ν κ°μ νμΈ)
if (enemies.Count(e => e.IsBoss) > 0)
{
// ...
}
// ν¨μ¨μ : Any() μ¬μ© (보μ€λ₯Ό μ°ΎμΌλ©΄ μ¦μ μ€λ¨)
if (enemies.Any(e => e.IsBoss))
{
ShowBossWarningUI();
}
μ΄λ¬ν LINQ μ§κ³ ν¨μλ€μ νμ©νλ©΄, λ°μ΄ν°λ₯Ό ν¨κ³Όμ μΌλ‘ λΆμνκ³ κ²μ λ‘μ§μ ν¨μ¬ κ°κ²°νκ² κ΅¬νν μ μμ΅λλ€!