লিনকুতে সমতল তালিকা


313

আমার কাছে একটি লিনকিউ ক্যোয়ারী রয়েছে যা প্রত্যাবর্তন করবে IEnumerable<List<int>> তবে আমি কেবল ফিরে আসতে List<int>চাই তাই আমি আমার সমস্ত রেকর্ডটি IEnumerable<List<int>>কেবলমাত্র একটি অ্যারেতে মার্জ করতে চাই ।

উদাহরণ:

IEnumerable<List<int>> iList = from number in
    (from no in Method() select no) select number;

আমি আমার সমস্ত ফলাফল নিতে চাই IEnumerable<List<int>> কেবল একটিতেList<int>

সুতরাং, উত্স অ্যারে থেকে: [1,2,3,4] এবং [5,6,7]

আমি কেবল একটি অ্যারে চাই [1,2,3,4,5,6,7]

ধন্যবাদ

উত্তর:


567

চেষ্টা SelectMany()

var result = iList.SelectMany( i => i );

8
ধন্যবাদ, আমি এটি সর্বদা ভুলে যাই - আমি জানি এটি সেখানে আছে তবে প্রতিবার এটি ব্যবহার করার সময় আমি গুগলিংয়ের জন্য খুব বেশি সময় ব্যয় করি। এই উত্তর বুকমার্কিং। :-)
BrainSlugs83

কিছুক্ষণের জন্য আমি ভীত ছিলাম যে আমিই একমাত্র এই ব্যক্তির প্রয়োজন ছিল। ধন্যবাদ মাইক!
অর্ণব চক্রবর্তী

7
এর জন্য কি কোনও বিকল্প বাক্য গঠন আছে SelectMany( i => i )? আমি এই সিনট্যাক্সটি অনেক ব্যবহার করে দেখেছি তবে এটি নির্বাচিত বৈশিষ্ট্যের একটি অধঃপতিত ব্যবহার বলে মনে হচ্ছে, তাই আমি ভাষা ডিজাইনারদের বিশেষভাবে তালিকার তালিকাগুলির জন্য একটি শর্টকাট বাক্য গঠন নিয়ে আসার প্রত্যাশা করতাম
অ্যান্ডি

86

কোয়েরি সিনট্যাক্স সহ:

var values =
from inner in outer
from value in inner
select value;

ধন্যবাদ নির্ভুল বাক্য গঠন যা আমি সন্ধান করছিলাম, এবং এতগুলি এসও উত্তরগুলি আরও কিছু ভার্বোজের তালিকাবদ্ধ করে।
সিলভারসাইডডাউন

এটি সিলেক্টম্যানির চেয়ে অনেক বেশি ভাল। আইএমওতে ঠিক কী চলছে তা আরও পরিষ্কার, এটি নির্দেশ করার জন্য ধন্যবাদ!
ব্রায়ান রায়নার

3
ব্যক্তিগতভাবে আমি সবসময় ক্যোরি সিনট্যাক্স সংস্করণটি পদ্ধতি কলিংয়ের সংস্করণের চেয়ে অনেক কম স্বজ্ঞাত খুঁজে পাই। যখন রিশার্পার লুপগুলি লিনকিউ এক্সপ্রেশনগুলিতে রূপান্তর করার প্রস্তাব দেয় যদি এটি যদি আমাকে কোয়েরি সিনট্যাক্স দেয় তবে আমি সর্বদা পূর্বাবস্থায় ফিরে যাই।
বাইকম্যান 868

23
iList.SelectMany(x => x).ToArray()

6
@ রিসার্সিভ বাকি সবাই কী মিস করেছে? .ToArray()? - এটি এক প্রকারের পরিস্থিতি - যদি আপনাকে কেবল একবার পুনরাবৃত্তি করতে হয় - বা যদি আইটেমগুলি পরিবর্তিত হওয়ার সম্ভাবনা থাকে তবে .ToArray()অবশ্যই আপনি যা চান তা তা নয়। তবে স্থির আইটেমগুলির সাথে আপনি একাধিকবার গণনা করতে চলেছেন .ToList()বা .ToArray()একটি কার্যকারিতা উন্নতি করবেন (সামান্য উচ্চতর মেমরির ব্যবহারের বিনিময়ে, যা সাধারণত বেশ ভাল কাজ হয়)।
BrainSlugs83

2
সম্ভবত এই ক্ষেত্রে পরিস্থিতিগুলির জন্য অ্যারে প্রয়োজন, যেহেতু প্রশ্নটিতে এটি নির্দিষ্ট করা হয়েছিল।
পুনরুত্থান

8
@ রিসার্সিভ, যদি আমরা নীটপিকিং করি তবে ওপি বলেছে যে তাকে ফিরতে হবে List<int>, তাই .ToList()সঠিক পছন্দ হবে।
মেমার্ক

@ মেমার্ক ওপিতে "শুধুমাত্র একটি অ্যারেতে" বলা হয়েছে
স্টেফান জ্যানসেন


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.