আপনি এই দুটি উপায় যেতে পারে। ব্যবহার LINQPad এবং একটি ডামি ডাটাবেস, আমি নিম্নলিখিত প্রশ্নের নির্মিত (যদি তুমি LINQ নতুন অমূল্য):
Posts.Join(
Post_metas,
post => post.Post_id,
meta => meta.Post_id,
(post, meta) => new { Post = post, Meta = meta }
)
অথবা
from p in Posts
join pm in Post_metas on p.Post_id equals pm.Post_id
select new { Post = p, Meta = pm }
এই বিশেষ ক্ষেত্রে, আমি লিনকিউ সিনট্যাক্সটি পরিষ্কার বলে মনে করি (আমি পড়তে সবচেয়ে সহজ) এর উপর নির্ভর করে দুজনের মধ্যে পরিবর্তন করি)।
আমি যে বিষয়টিটি উল্লেখ করতে চাই তা হ'ল যদি আপনার ডাটাবেসে উপযুক্ত বিদেশী কীগুলি থাকে ((পোস্ট এবং পোস্ট_মেটার মধ্যে) তবে আপনি সম্ভবত প্রচুর সংখ্যক রেকর্ড লোড করার চেষ্টা না করলে সম্ভবত আপনার স্পষ্ট যোগদানের প্রয়োজন হবে না) । আপনার উদাহরণ থেকে বোঝা যাচ্ছে যে আপনি একটি পোস্ট এবং এটি মেটা ডেটা লোড করার চেষ্টা করছেন। ধরে নিচ্ছি যে প্রতিটি পোস্টের জন্য অনেকগুলি পোস্ট_মেটা রেকর্ড রয়েছে তবে আপনি নিম্নলিখিতটি করতে পারেন:
var post = Posts.Single(p => p.ID == 1);
var metas = post.Post_metas.ToList();
আপনি যদি এন +1 সমস্যা এড়াতে চান, তবে আপনি স্পষ্টভাবে লিনকিউকে এসকিউএলকে সমস্ত প্রকারের আইটেম একসাথে লোড করতে বলতে পারেন (যদিও আপনি এল 2 এস এর সাথে বেশি পরিচিত হওয়ার জন্য এটি একটি উন্নত বিষয় হতে পারে)। নীচের উদাহরণটিতে বলা আছে "আপনি যখন কোনও পোস্ট লোড করেন, তার সাথে সম্পর্কিত সমস্ত রেকর্ড 'পোস্ট_মেটাস' সম্পত্তি দ্বারা উপস্থাপিত বিদেশী কী এর মাধ্যমেও লোড করুন:
var dataLoadOptions = new DataLoadOptions();
dataLoadOptions.LoadWith<Post>(p => p.Post_metas);
var dataContext = new MyDataContext();
dataContext.LoadOptions = dataLoadOptions;
var post = Posts.Single(p => p.ID == 1); // Post_metas loaded automagically
একই ধরণের, বা বিভিন্ন ধরণের জন্য LoadWith
একক সেটটিতে অনেকগুলি কল করা সম্ভব DataLoadOptions
। আপনি যদি এই প্রচুর পরিমাণে করেন তবে আপনি কেবল ক্যাচিং বিবেচনা করতে পারেন।