السلام عليكم و رحمة الله و بركاته
انا موظف بمديرية تربية
أقوم بعمل برنامج لارسال قسائم رواتب الموظفين لمدارسهم حيث ان وزارة التربية تبعث لنا قسائم المديرية على شكل ملف pdf
فاقوم بتقسيم هذا الملف الى ملفات pdf حسب المدرسة بحيث ان ملف كل مدرسة يسمى باشارة الوحدة لهذه المدرسة مكون من 5 ارقام
مثلا إشارة الوحدة لمدرسة س هو 23100 يكون ملف قسائمها هو 23100.pdf
و هكذا طبعا و تكون ملفات pdf داخل مجلد في جهاز الكمبيوتر
فقمت بعمل قاعدة بيانات للمدارس تحوي على 3 حقول
SchoolUnit إشارة الوحدة للمدرسة مكون من 5 ارقام و هو مفتاح اساسي
SchoolName اسم المدرسه
SchoolEmail البريد الالكتروني للمدرسة على gmail
و جدول المدرسة يكون فيه بيانات عن المدرسة حسب الحقول الثلاث مثلا
SchoolEmail SchoolName SchoolUnit
23100 مدرسة الرحمة rahma@gmail.com
23200 مدرسة الفرقان furgan@gmail.com
وهكذا
و مجلد مخزن على القرص الصلب يحوي على ملفات pdf و هي
23100.pdf
23200.pdf
على المسار d:\pdfs
و الذي اريده أي يقوم بارسال قسيمة كل مدرسة لبريدها عند مقارة اسم ملف pdf مع حقل SchoolUnit في جدول المدارس
فقمت باستخدام تقنية linq كما يلي
DirectoryInfo di = new DirectoryInfo(@"e:\pdfs\");
var c = (from i in di.GetFiles("*.pdf", SearchOption.AllDirectories)
let gg = Int32.Parse(System.IO.Path.GetFileNameWithoutExtension(i.Name))
join s in dbo.Schools on Int32.Parse(System.IO.Path.GetFileNameWithoutExtension(i.Name))
equals s.SchoolUnit
select new { i, s, gg });
بحيث يقوم بجلب بيانات أسماء الملفات بدون امتداد وجلب بيانات المدرسة من قاعدة البيانات و مقارنة اسم الملف في المجلد مع حقل SchoolUnit في قاعدة البيانات
و قد استخدمت foreach
و لكن يقوم بارسال كل قسائم المدارس لكل مدرسة