Single()
single์ ์ปฌ๋ ์ ์์ ์ ์ผํ ์์๋ฅผ ๋ฐํํ๋ค.
var list = new List<Profile>
{
new Profile() { Name = "A", Age = 1 },
new Profile() { Name = "B", Age = 2 },
new Profile() { Name = "C", Age = 3 },
new Profile() { Name = "D", Age = 4 },
new Profile() { Name = "E", Age = 5 },
new Profile() { Name = "F", Age = 6 }
};
var singleList = list.Single(x => x.Age == 3);
Console.WriteLine(singleList.ToString());
์ list์์ Age๊ฐ 3์ธ ์์๋ ํ๋๋ฐ์ ์กด์ฌํ์ง ์๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ C๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ค.
๊ทผ๋ฐ ๋ง์ฝ ์ ์ผํ ์์๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
var list = new List<Profile>
{
new Profile() { Name = "A", Age = 1 },
new Profile() { Name = "B", Age = 2 },
new Profile() { Name = "C", Age = 3 },
new Profile() { Name = "D", Age = 4 },
new Profile() { Name = "E", Age = 5 },
new Profile() { Name = "F", Age = 3 },
};
var singleList = list.Single(x => x.Age == 3);
์ด๋ ๊ฒ Age๊ฐ 3์ธ ์์๋ C, F ๋ ๊ฐ๋ค. ์ด ๊ฒฝ์ฐ์๋ ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ฒ ๋๋ค.
Unhandled exception. System.InvalidOperationException: Sequence contains more than one matching element
์์์ ๋งํ๋ฏ์ด Single()์ ์ปฌ๋ ์ ์์ ์ ์ผํ ์์๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๋ค.
๋ง์ฝ Single์ ์ฌ์ฉํ๋ ๋ชฉ์ ์ด
1. ๋ด๊ฐ ์ํ๋ ์์๊ฐ ์ ์ผํ์ง ์๋์ง ๋ชจ๋ฅด๋ ์ํ์์
2. ๊ทธ ๊ฐ์ ์ ์ผํ์ง ํ์ธํ๊ณ
3. ๊ทธ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด
Single์ ์ฐ๋ ๊ฒ์ด ๋ง๋ค.
ํ์ง๋ง, ๋ง์ฝ ๋ด๊ฐ ์ด ์ปฌ๋ ์ ์ด ์ ์ผํ๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด First()๋ Last()๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ผ๋ก ์ข๋ค.
var list = new List<Profile>
{
new Profile() { Name = "A", Age = 1 },
new Profile() { Name = "B", Age = 2 },
new Profile() { Name = "C", Age = 3 },
new Profile() { Name = "D", Age = 4 },
new Profile() { Name = "E", Age = 5 },
new Profile() { Name = "F", Age = 6 }
};
๋ง์ฝ Single()์ ์ฌ์ฉํด์ Age = 3์ธ ๊ฐ์ ์ list๋ฅผ ์ํํ๋ค๋ฉด, C๊ฐ Age=3์ธ ๊ฒ์ ํ์ธํ์์๋ F๊น์ง ์ ๋ถ ํ์ธํด์ผ ํ๋ค.
First()๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, C๊ฐ Age=3์ธ ๊ฒ์ ํ์ธํ ์๊ฐ, ๋ ์ด์ ์ฐพ์ง ์๊ณ ๋ฐํํ๋ค.
Single()์ ์ ์ผํ ๊ฐ์ ๋ฐ๊ฒฌํด๋ ๊ทธ ๊ฐ์ด ์ ์ผํ์ง ํ์ธํ๊ธฐ ์ํด ์ปฌ๋ ์ ์ ์ฒด๋ฅผ ์ํํ ์๋ฐ์ ์๋ค. First()์ Last()๋ ๊ฐ์ ๋ฐ๊ฒฌํ ์๊ฐ ์ค๋จํ๊ณ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ ์ผํ ๊ฐ์ธ์ง ํ์ธํ๋ ๊ฒ ๋งค์ฐ ์ค์ํ ํ๋ก์ธ์ค๊ฐ ์๋๋ฉด Single()์ ์ฌ์ฉ๋์ง ์์ ๊ฒ ๊ฐ๋ค.
'๐ฅ๏ธ > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C# WPF] e.Handled = true; (0) | 2023.10.16 |
---|---|
[C#] LINQ์์ foreach๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฐ๋ฉด ์๋๋ ์ด์ (0) | 2023.10.12 |
[C#] ์ค๋ ๋์ ํฌ๋ฆฌํฐ์ปฌ ์น์ (Critical Section) (0) | 2023.10.11 |
[C#] ์ค๋ ๋(Thread) (0) | 2023.10.11 |
[C#] ๋ฆฌํ๋ ์ (Reflection): ๋์ ๋ฉ์๋ ์์ฑํ๊ธฐ (3) | 2023.10.11 |