سلام بنده دو جدول دارم که فیلدهای اونها به صورت زیر هستن :
جدول مشتری
public class customer
{
public int customerId {get; set;}
public string customerName {get; set;}
}
جدول خریدهای مشتری (به صورت خیلی خلاصه)
public class order
{
public int orderId {get; set;}
public int customerId {get; set;}
public dateTime orderDate {get; set;}
}
اطلاعات موجود در جدول order :
خب در جدول order ممکنه یک مشتری چندین بار سفارش داشته باشه. حالا من میخوام لیست مشتریانی که سفارش دارن رو نمایش بدم. یعنی اگر در تصویر بالا نگاه کنید مشتریهای 3 و 5 باید نمایش داده بشه. از کویری زیر استفاده کردم :
var query = _context.order.Distinct.ToList();
ولی در خروجی هر 5 رکورد نمایش داده میشه. چجوری میتونم لیست مشتریانی که خرید داشتن رو پیدا کنم ؟
سلام
Distinct براساس ستون مشخصی عمل میکنه. به عبارت دیگه شما برای Distinct مشخص نکردی براساس کدوم ستون عمل کنه و تکراری ها رو شمارش نکنه. شما یا باید برای این دستور نام ستون موردنظرت رو بگی و یا حتی شما میتونی یه select براساس costomerid بزنی و بعد روی نتیجه این select دستورDistinct رو اجرا کنی.
برای استفاده از دستور Distinct در انتیتی فریم ورک یا باید بر اساس یک ستون این کار رو انجام بدید یا اینکه اگر بر اساس کل سطرها (بر اساس انتیتی) می خواید این کار انجام بشه باید سطرها دارای اطلاعات تکراری باشن.
الان در تصویری که شما از اطلاعات خودتون ارسال کردید درسته که customerId ها تکراری هستن ولی orderDate ها یکسان نیستن.
دستور شما به صورت زیر باید تبدیل بشه :
var model = _Context.orders.Select(s => s.customerId).Distinct().ToList();
با اجرا کوئری بالا شما فقط customerId هایی که تکراری نیستن رو خواهید داشت.
دقت کنید اگر بر اساس بیش از یک ستون هم خواستید اطلاعات رو داشته باشید می تونید به صورت زیر انجام بدید.(فرض کنید در خدول order ستون CustomerName و CustomerTel هم دارید.
var model = _Context.orders.Select(s => new {customerId = s.customerId , customerName = s.customerName, customeTel = s.customerTel}).Distinct().ToList();
تاریخ :
1403/12/23
- ساعت :
03:14:00 PM
- بازدید :
135
- پاسخ :
1
|
تاریخ :
1403/12/22
- ساعت :
11:05:00 AM
- بازدید :
187
- پاسخ :
1
|
تاریخ :
1399/11/25
- ساعت :
11:22:00 AM
- بازدید :
3896
- پاسخ :
2
|
تاریخ :
1403/12/02
- ساعت :
12:09:00 AM
- بازدید :
270
- پاسخ :
1
|
تاریخ :
1398/07/08
- ساعت :
12:21:00 AM
- بازدید :
3048
- پاسخ :
2
|
تاریخ :
1403/11/23
- ساعت :
08:24:00 PM
- بازدید :
191
- پاسخ :
2
|
تاریخ :
1399/11/10
- ساعت :
10:01:00 PM
- بازدید :
7167
- پاسخ :
4
|
تاریخ :
1399/04/09
- ساعت :
08:51:00 PM
- بازدید :
3094
- پاسخ :
1
|
تاریخ :
1399/03/25
- ساعت :
08:58:00 PM
- بازدید :
3825
- پاسخ :
1
|
تاریخ :
1400/12/18
- ساعت :
10:24:00 AM
- بازدید :
2111
- پاسخ :
1
|
تاریخ :
1404/01/07
- ساعت :
05:02:00 AM
- بازدید :
89
- پاسخ :
1
|
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1314
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
66
- پاسخ :
1
|
تاریخ :
1398/08/23
- ساعت :
09:16:00 PM
- بازدید :
9852
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
12:18:00 PM
- بازدید :
38
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
10:39:00 AM
- بازدید :
45
- پاسخ :
1
|
تاریخ :
1404/01/02
- ساعت :
05:05:00 PM
- بازدید :
60
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
48
- پاسخ :
1
|
تاریخ :
1399/06/04
- ساعت :
02:25:00 PM
- بازدید :
4419
- پاسخ :
2
|
تاریخ :
1403/11/30
- ساعت :
10:36:00 AM
- بازدید :
202
- پاسخ :
2
|