cuốn sách gpt4 ai đã làm

Tại sao so sánh danh sách không thành công nếu danh sách (dường như) giống hệt nhau

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 23:27:43 28 4
mua khóa gpt4 Nike

Mục tiêu chính của tôi là so sánh dữ liệu được lưu trữ trong cơ sở dữ liệu và tệp XLSX.

Để làm điều này, tôi đã tạo hai danh sách như sau:

lớp riêng
{
sản phẩm chuỗi công khaiSku { get;
chuỗi công khai tên sản phẩm { get;
chuỗi sản phẩm công khaiSubfamilyId { get;
chuỗi công khai ProductSubfamilyName { get;
chuỗi sản phẩm công khaiFamilyId { get;
chuỗi công khai ProductFamilyName { get;
};

(...)
Danh sách sản phẩmListsDB = Danh sách mới();
Danh sách sản phẩmListsXLSX = Danh sách mới();
(...)

Đầu tiên, tôi cung cấp dữ liệu trực tiếp từ kết quả truy vấn SQL:

trong khi (reader.Read())
{
ProductList pl = new ProductList();
pl.productSku = reader.GetString(reader.GetOrdinal("ProductSku"));
pl.productName = reader.GetString(reader.GetOrdinal("ProductName"));
pl.productSubfamilyId = reader.GetString(reader.GetOrdinal("ProductSubfamilyId"));
pl.productSubfamilyName = reader.GetString(reader.GetOrdinal("ProductSubfamilyName"));
pl.productFamilyId = reader.GetString(reader.GetOrdinal("ProductFamilyId"));
pl.productFamilyName = reader.GetString(reader.GetOrdinal("ProductFamilyName"));
ProductListsDB.Add(pl);
}

Một cái khác chứa dữ liệu được lưu trữ trong tệp XLSX:

for (int rowNum = startedRow; rowNum <= TotalRows; rowNum++)
{
var row = myWorksheet.Cells[rowNum, 1, rowNum, TotalColumns].ToArray();

ProductList pl = new ProductList();
pl.productSku = (string)row[0].Value;
pl.productName = (string)row[1].Value;
pl.productSubfamilyId = (string)row[2].Value;
pl.productSubfamilyName = (string)row[3].Value;
pl.productFamilyId = (string)row[4].Value;
pl.productFamilyName = (string)row[5].Value;
sản phẩmListsXLSX.Add(pl);
}

Sau đó tôi muốn so sánh chúng và:

Assert.IsTrue(Equals(productListsDB.Count,productListsXLSX.Count), "Số bản ghi trong tệp Excel và DB khác nhau!");

Vượt qua tốt!

Nhưng cả hai mục sau đều không đạt:

Assert.IsTrue(productListsDB.All(productListsXLSX.Contains), "Dữ liệu được gửi trong tệp Excel và được lưu trữ trong DB đều bằng nhau.");
CollectionAssert.AreEquivalent(productListsDB, ProductListsXLSX, "Dữ liệu được gửi trong tệp Excel và được lưu trữ trong DB đều bằng nhau.");

Tôi còn khá mới trong việc viết và gỡ lỗi mã, nhưng tôi đã tìm hiểu được một số thông tin chi tiết về danh sách này thông qua QuickWatch trong VS. Tôi đã sao chép dữ liệu vào các tệp riêng biệt và nén chúng - chúng giống nhau:

http://pastebin.com/KFDHpQkChttp://pastebin.com/4j1n1nPH

有什么线索吗?

câu trả lời hay nhất

bạn cần ghi đè Bằng để xác định xem hai sản phẩm có tương đương nhau hay không. Thông thường khi chúng ta che chắnBằng, chúng tôi cũng sẽ đề cập đếnNhận mã băm:Tại sao việc ghi đè GetHashCode khi phương thức Equals bị ghi đè lại quan trọng?

lớp riêng
{
sản phẩm chuỗi công khaiSku { get;
chuỗi công khai tên sản phẩm { get;
chuỗi sản phẩm công khaiSubfamilyId { get;
chuỗi công khai ProductSubfamilyName { get;
chuỗi sản phẩm công khaiFamilyId { get;
chuỗi công khai ProductFamilyName { get;

ghi đè công khai bool Equals(object otherProduct)
{
// mã của bạn vào đây để biết khi nào 2 sản phẩm tương đương nhau.
// Ở đây tôi giả sử rằng 2 sản phẩm của bạn bằng nhau khi tất cả các thuộc tính đều bằng nhau:
nếu (Sản phẩm khác == null)
trả về sai;
trả lại this.productSku == otherProduct.productSku &&
this.productName == otherProduct.productName &&
this.productSubfamilyId == otherProduct.productSubfamilyId &&
this.productSubfamilyName == otherProduct.productSubfamilyName &&
this.productFamilyId == otherProduct.productFamilyId &&
this.productFamilyName == otherProduct.productFamilyName;
}

ghi đè công khai int GetHashCode()
{
// trả lại mã băm của bạn
int băm = 13;
hàm băm = (hash * 7) + this.productSku.GetHashCode();
hàm băm = (hash * 7) + this.productName.GetHashCode();
...
trả về hàm băm;
}
};

Về C# - tại sao so sánh danh sách không thành công nếu các danh sách (dường như) giống hệt nhau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/33318065/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress