کد و داده دو عنصر اساسی در نرم افزار می باشند که هر یک دارای جایگاه تعریف شده مختص به خود است . یکی از فعالیت های مهم در زمان پیاده سازی نرم افزار ، نوشتن کد مورد نیاز جهت دستیابی به داده است . برای نوشتن کد ، پیاده کنندگان می توانند از زبان های برنامه نویسی مختلفی استفاده کنند . انتخاب زبان برنامه نویسی به عوامل متعددی نظیر نوع رفتار برنامه ، پیش زمینه و دانش پیاده کنندگان ، مهارت های تیم پیاده کننده ، نوع سیستم عامل و سیاست های سازمان بستگی دارد . صرفنظر از این که پیاده کنندگان چه زبانی را برای نوشتن کد انتخاب می نمایند ، در زمان پیاده سازی نرم افزار به دفعات مجبور خواهیم بود که با داده سرو کار داشته باشیم . داده می تواند بر روی دیسک ، جداولی در بانک اطلاعاتی و یا اسناد XML ذخیره شده باشد . در برخی موارد لازم است که با تمامی نوع های اشاره شده در یک برنامه سرو کار داشته باشیم . فراموش نکنیم که مدیریت داده برای هر پروژه نرم افزاری یک باید است .
پیاده کنندگان نرم افزار در زمان نوشتن کد و تولید امکانات مورد نیاز در هر یک از لایه های متفاوت ( با توجه به نوع معماری نرم افزار ) ، همواره این پرسش را با خود مطرح می نمایند که محیط پیاده سازی و یا فریمورک هائی نظیر دات نت چه امکاناتی را در اختیار آنها خصوصا” در زمان کار با داده قرار می دهند . به عبارت دیگر ، یک سیستم عامل چگونه می تواند نیاز پیاده کنندگان نرم افزار را پوشش دهد و چه امکانات و پتانسیل هائی را در اختیار علاقه مندان به طراحی و پیاده سازی نرم افزار قرار می دهد .
دات نت به عنوان یکی از فریمورک های پیاده سازی نرم افزار در سالیان اخیر ، امکانات متعددی را جهت کار با داده در اختیار پیاده کنندگان نرم افزار قرار می دهد . LINQ ، تلاشی است جهت یکپارچگی عمیق تر و بیش تر بین زبان های برنامه نویسی و داده . در واقع LINQ مشتمل بر مجموعه ای از عملگرهای query استاندارد است که معماری لازم جهت حرکت ، فیلترینگ و اجرای عملیات بر روی تقریبا” هر نوع منبع داده نظیر XML ، بانک های اطلاعاتی رابطه ای و اشیاء درون حافظه را فراهم می نماید .
