Định dạng ngày giờ Linq làm thế nào để sử dụng?/Chuyển đổi?

lập trình


Xin chào ngài,

Giúp tôi cách chuyển đổi Định dạng ngày giờ LINQ

Ví dụ:

1, Thứ Ba, ngày 26 tháng 1 năm 2012 (hoặc)

2, Thứ Ba, 26/01/2012

Hãy cho tôi giải pháp?

Bởi mohan

Giải pháp 1

VB
YearMonth = r.SomeDateTime.ToString("dddd, MMMM yyyy")

Giải pháp 3

Linq không biết chuyển đổi các phương thức “ToString()” nên khi bạn lấy dữ liệu, hãy sử dụng vô số như
var selectQuery = từ thêm vào db.address.asEnumerable() ;

thì bây giờ bạn có thể sử dụng các phương thức chuyển đổi hoặc “tostring”.

Giải pháp 4

(từ tên lớp trong time.table chọn t.Date).ToList().Select(d => d.ToString(“yyyy-MM-dd”);
hãy thử nó hoạt động ……

Giải pháp 5

C#
var selectQuery=from add in db.address
                 select add.myDate.toString("{0:dddd, MMMM d, yyyy}");

selectQuery.Distinct();

thử cái này xem sao..

Trân trọng,
nishant

Giải pháp 7

Định dạng tem ngày giờ phía máy chủ

Đôi khi việc định dạng phía máy chủ rất hữu ích. Việc nhóm các dấu thời gian có độ phân giải phụ thứ hai thành các nhóm dài một giờ hoặc một ngày là một ví dụ.

Trong trường hợp sử dụng của tôi, chúng tôi nhận được 700 nghìn bản ghi mới/ngày. Vì vậy, phía máy chủ có thể nhanh hơn nhiều. Trong trường hợp này, 2,5 triệu bản ghi được nhóm thành 4 ngày.

Việc áp dụng AsEnumerable hoạt động nhưng sẽ mất ~40 phút (2500 giây). Điều này được ngoại suy từ việc trả về 1000/giây.

Việc nhóm phía máy chủ mất khoảng 0,7 giây. Điều này được đo lường.

Tôi đang chạy một điều khiển từ xa rất chậm, nhưng đó chính xác là vấn đề. Cơ sở dữ liệu được lưu trữ luôn trả về kết quả qua mạng, do đó, việc tổng hợp tại máy chủ DB cho phép công cụ DB thực hiện cục bộ những gì nó được xây dựng.

Một số thao tác như toupper() hoặc định dạng mọi bản ghi nên được thực hiện cục bộ nếu có thể. LinqToSQL/EF để định dạng ngày không khó lắm, nhưng kết quả SQL khá lộn xộn.

Việc thêm dấu phân cách là dành cho con người và không cần thiết để nhóm. Ngay cả các phương thức PadLeft() cũng không cần thiết trong hầu hết các trường hợp, nhưng chúng làm cho ngày giờ thu được dễ dàng sắp xếp theo từ vựng và dễ đọc.

Trong ví dụ này, tôi đặt Giờ, Tối thiểu và Giây thành 00, để nhóm theo ngày.
Để nhóm theo giờ, bỏ ghi chú:

let Hour = Date.Hour.ToString().PadLeft(2, '0')
//let Hour = "00"

Đây chỉ là một ví dụ nhanh chóng và bẩn thỉu. không phải là mã nhanh nhất từ ​​​​trước đến nay.

Chỉ cần thực hiện phía máy chủ sẽ nhận được nó từ 40 giây. dưới một giây. Vì vậy, bây giờ tôi đã hoàn thành.

BTW tập lệnh này chỉ chạy trên LinqPad trong env của tôi. Vì vậy, hãy chỉnh sửa cho phù hợp với nhu cầu của bạn nhưng đừng yêu cầu tôi giải quyết vấn đề cụ thể của bạn.

void Main()
{
	var query =
	from cat in CATOperations

	let Date = cat.OperationDateTime

	let Year = Date.Year.ToString().PadLeft(4, '0')
	let Month = Date.Month.ToString().PadLeft(2, '0')
	let Day = Date.Day.ToString().PadLeft(2, '0')
	//let Hour = Date.Hour.ToString().PadLeft(2, '0')
	let Hour = "00"
	//let Minute = Date.Minute.ToString().PadLeft(2, '0')
	let Minute = "00"
	//let Second = Date.Second.ToString().PadLeft(2, '0')
	let Second = "00"

	let dateGroup = Year
		+ '/'
		+ Month
		+ '/'
		+ Day
		+ " "
		+ Hour
		+ ":"
		+ Minute
		+ ":"
		+ Second

	where Date > new DateTime(2024, 1, 9)
	//select new{Date, dateGroup};

	group 1 by dateGroup into g
	orderby g.Key
	let count = g.Count()

	select new { g.Key, count };

	query.Dump();
}

コメント

タイトルとURLをコピーしました