با سلام
دستور زیر را دارم و میخواهم به UserID که در Select دوم هست دسترسی داشته باشم
var q = oDB.Posts .Where(t => t.CrawlDate.Account.Gender == "Female") .GroupBy(t => SqlFunctions.DatePart("week", t.Date)) .Select(g => new { Week = g.Key, AllPostInWeek = g.Count(), PostDate = g.Select(s => new { Date = s.Date.Substring(0, 10), Spam=s.CrawlDate.Account.Spam, UserName= s.CrawlDate.Account.UserName, UserID= s.CrawlDate.Account.AccountID, }) //.Where(t=>t.UserID== 2) .GroupBy(t => SqlFunctions.DatePart("day", t.Date)) }) .ToList();
از روش زیر به Week و AllPostInWeek دسترسی دارم ولی به پراپرتی های Select دوم نه.
var q1 = q.Where(t => t.Week == 2).ToList();
قبل از Select متد Where را قرار بدید، پس از استفاده از Select شما یک anonymous type بازگردانی می کنید برای همین نمیتوان دستور Where را برروی آن اعمال کنید.
قبل از کدام Select?
دستور where یک شرط نیاز داره و چه شرطی قرار بدم.
شما میخواید برای خصوصیت PostData شرط بزارید اگر درست فهمیده باشم، حال باید آن Where را قبل از Select قرار بدید مانند کد زیر :
var q = oDB.Posts .Where(t => t.CrawlDate.Account.Gender == "Female") .GroupBy(t => SqlFunctions.DatePart("week", t.Date)) .Select(g => new { Week = g.Key, AllPostInWeek = g.Count(), PostDate = g.Where(t=>t.UserID== 2).Select(s => new { Date = s.Date.Substring(0, 10), Spam=s.CrawlDate.Account.Spam, UserName= s.CrawlDate.Account.UserName, UserID= s.CrawlDate.Account.AccountID, }) .GroupBy(t => SqlFunctions.DatePart("day", t.Date)) }) .ToList();
نه. این را بلدم.حتی بعدشم هم میشه گذاشت.
من با این دستور کل اکانت ها را بررسی میکنم و گروه بندی میکنم.
بعد در یک حلقه می خواهم همین شرطی که شما قرار دادید را دوباره برای هر اکانت روی این q اجرا کنم. یعنی یکبار 1 و 2 و 3 و ...
به این صورت
var q1 = q.Where(t => t.Week == 2).ToList();
در این دستور من به week دسترسی دارم ولی به پراپرتیهای داخل select دوم دسترسی ندارم
یعنی اگر بنویسم
var q1 = q.Where(t => t.PostDate.UserId == 2).ToList();
خطا میگیره و UserID را نمیشناسه
PostData یک لیست است ؟
امکانش هست اون دستوری ک مشکل دارم را بهم بدید. اون ی خط را چی بنویسم. اگر بخوام q را هر بار بر اساس یک UserID جستجو کنم.
ممنون
جوابی نبود؟خب لیست میتونه باشه دیگه.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)