๐Ÿš€ WhereDynamic๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET8+์—์„œ ๋™์  LINQ ์ฟผ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋ฐœํ–‰: (2025๋…„ 12์›” 2์ผ ์˜คํ›„ 05:30 GMT+9)
4 min read
์›๋ฌธ: Dev.to

Source: Dev.to

Introducing WhereDynamic

์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๊ฒฝํ—˜ํ•ด๋ดค์Šต๋‹ˆ๋‹ค: ์กฐ๊ฑด๋ถ€ ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋์—†์ด if ๋ฌธ์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ์„œ๋กœ ๋‹ค๋ฅธ ํ•„ํ„ฐ ์กฐํ•ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์—”๋“œํฌ์ธํŠธ์— ๋กœ์ง์„ ๋ณต์ œํ•˜๋Š” ์ƒํ™ฉ์„. ์ด๋Š” ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง€๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

The Problem

.NET๊ณผ Entity Framework๋ฅผ ์‚ฌ์šฉํ•ด API ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ๋•Œ, ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋”ฐ๋ผ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ฝ”๋“œ๊ฐ€ ๋ถ€ํ’€์–ด ์˜ค๋ฅด๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

The Solution

WhereDynamic์€ ๋Ÿฐํƒ€์ž„์— LINQ Where ์ ˆ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ํƒ€์ž…โ€‘์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์—ฌ, ๋ฐ˜๋ณต์ ์ธ ์กฐ๊ฑด ๋กœ์ง์„ ์—†์• ๋ฉด์„œ๋„ EF Core๊ฐ€ SQL๋กœ ์™„์ „ํžˆ ๋ณ€ํ™˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Practical Use Cases

1. Advanced Search Filters

์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜์˜ ๊ธฐ์ค€(์˜ˆ: ๋‚ ์งœ ๋ฒ”์œ„, ํ…์ŠคํŠธ ๋งค์น˜, ์ˆซ์ž ๋ฒ”์œ„)์„ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณต์žกํ•œ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋ฅผ ๋ณ„๋„์˜ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

2. Multiโ€‘Tenant Data Filtering

ํ…Œ๋„ŒํŠธ๋ณ„ ํ•„ํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ ์šฉํ•˜์—ฌ ๊ฐ ์š”์ฒญ์ด ํ˜„์žฌ ํ…Œ๋„ŒํŠธ์— ์†ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ ‘๊ทผํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

3. API Query Parameters

์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ LINQ ํ”„๋ ˆ๋””์ผ€์ดํŠธ์— ์ง์ ‘ ๋งคํ•‘ํ•˜์—ฌ REST ๋˜๋Š” GraphQL ์—”๋“œํฌ์ธํŠธ์—์„œ ์œ ์—ฐํ•œ ํด๋ผ์ด์–ธํŠธโ€‘์ฃผ๋„ ํ•„ํ„ฐ๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

4. Complex Nested Conditions

๋™์ ์œผ๋กœ ์ค‘์ฒฉ๋œ AND/OR ๊ทธ๋ฃน์„ ๊ตฌ์„ฑํ•˜์—ฌ โ€œ(A AND B) OR (C AND (D OR E))โ€์™€ ๊ฐ™์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉ ์—†์ด ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Key Benefits

  • Cleaner Code โ€“ ๋ฐ˜๋ณต์ ์ธ ์กฐ๊ฑด ๋กœ์ง์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • Type Safety โ€“ IntelliSense ์ง€์›๊ณผ ์ปดํŒŒ์ผ ์‹œ์  ๊ฒ€์‚ฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Performance โ€“ ์ตœ์ ํ™”๋œ SQL ์ฟผ๋ฆฌ๋กœ ์ง์ ‘ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • Maintainability โ€“ ํ•„ํ„ฐ ๋กœ์ง์ด ์ค‘์•™ ์ง‘์ค‘ํ™”๋˜์–ด ํ…Œ์ŠคํŠธ์™€ ํ™•์žฅ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  • Flexibility โ€“ ๊ธฐ์กด Entity Framework ์ฝ”๋“œ์™€ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Built For Modern .NET

WhereDynamic์€ .NETโ€ฏ8+์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ Entity Framework Core์™€ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ๊ณผ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. REST API, GraphQL ์—”๋“œํฌ์ธํŠธ, ๋ณต์žกํ•œ ๋ณด๊ณ  ์‹œ์Šคํ…œ ๋“ฑ ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ์š”๊ตฌ์— ๋งž๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

C# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Excel์„ PDF๋กœ ๋ณ€ํ™˜

๊ฐœ์š” Excel ํŒŒ์ผ์„ ๊น”๋”ํ•˜๊ณ  ๊ณต์œ  ์ค€๋น„๊ฐ€ ๋œ PDF๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๊ณผ์ •์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. GroupDocs.Conversion Cloud SDK๋ฅผ ์‚ฌ์šฉํ•˜๋ฉดโ€ฆ

C#๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PDF ๋ฌธ์„œ์— ์›Œํ„ฐ๋งˆํฌ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

PDF ๋ฌธ์„œ๋Š” ์•ˆ์ •์„ฑ, ํฌ๋กœ์Šคโ€‘ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ, ๋†’์€ ๋ณด์•ˆ์„ฑ ๋•Œ๋ฌธ์— ์‚ฐ์—… ์ „๋ฐ˜์— ๊ฑธ์ณ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์›Œํ„ฐ๋งˆํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํšจ๊ณผ์ ์ธ โ€ฆ

WinUI 3: Title Bar์—์„œ ๋”๋ธ” ํด๋ฆญ ์ฐจ๋‹จ

๋ชฉํ‘œ: ๋ฉ”์ธ ์œˆ๋„์šฐ๊ฐ€ ํƒ€์ดํ‹€ ๋ฐ”๋ฅผ ๋”๋ธ” ํด๋ฆญํ–ˆ์„ ๋•Œ ์ตœ๋Œ€ํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋™์ž‘์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค.