Đầu tiên, câu trả lời cơ bản:
var query = checks.GroupBy<Customer, string>(delegate (Customer c) {
return string.Format("{0} - {1}", c.CustomerId, c.CustomerName);
}).Select(delegate (IGrouping<string, Customer> customerGroups) {
return new { Customer = customerGroups.Key, Payments = customerGroups };
});
Sau đó, làm thế nào để bạn tìm ra những điều mình?
Trước tiên, hãy tải xuống Trình phản xạ từ here và cài đặt.
Sau đó, xây dựng một chương trình mẫu, như chương trình bảng điều khiển nhỏ, chứa mã bạn muốn phân tích. Đây là mã tôi đã viết:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication11
{
public class Customer
{
public Int32 CustomerId;
public Int32 CustomerName;
}
class Program
{
static void Main(string[] args)
{
var checks = new List<Customer>();
var query = from c in checks
group c by String.Format("{0} - {1}", c.CustomerId, c.CustomerName)
into customerGroups
select new { Customer = customerGroups.Key, Payments = customerGroups };
}
}
}
Sau đó, bạn xây dựng và mở phản xạ và yêu cầu mở tệp .exe đang đề cập đến.
Sau đó, bạn điều hướng đến phương thức được đề cập, trong trường hợp của tôi là ConsoleApplication11.Program.Main
.
Bí quyết ở đây là truy cập trang tùy chọn của Trình phản xạ và yêu cầu hiển thị cú pháp C# 2.0, thay thế LINQ bằng các cuộc gọi phương thức tĩnh thích hợp. Làm điều đó mang lại cho tôi đoạn mã sau:
private static void Main(string[] args)
{
List<Customer> checks = new List<Customer>();
var query = checks.GroupBy<Customer, string>(delegate (Customer c) {
return string.Format("{0} - {1}", c.CustomerId, c.CustomerName);
}).Select(delegate (IGrouping<string, Customer> customerGroups) {
return new { Customer = customerGroups.Key, Payments = customerGroups };
});
}
Bây giờ, tất nhiên mã này có thể được viết một chút đẹp hơn với lambdas và tương tự, giống như những gì @mquandershowed, nhưng với suy nghi, ít nhất bạn sẽ có thể hiểu được các cuộc gọi phương thức được tham gia.
Để tham khảo trong tương lai, câu hỏi này được trả lời trong đặc điểm kỹ thuật C# 3.0, bạn có thể tải xuống Internet. Tất cả các quy tắc chuyển đổi truy vấn được chỉ định ở đó. –
ty, không biết các quy tắc chuyển đổi đã được ghi chép. –