【发布时间】:2018-10-07 12:56:51
【问题描述】:
HelperLibrary.Models.Book.cs 中的图书类
public class Book
{
public string Title;
public string Author;
public string ISBN;
public Book(string title, string author, string iSBN)
{
Title = title;
Author = author;
ISBN = iSBN;
}
}
打电话
private void SaveChanges_btn_Click(object sender, RoutedEventArgs e)
{
List<HelperLibrary.Models.Book> NewUsersBooks = new List<HelperLibrary.Models.Book>();
foreach (var x in UserBooks_List.Items)
{
foreach(HelperLibrary.Models.Book y in App.GlobalBookList)
{
if (y.ISBN == x.ToString())
{
NewUsersBooks.Add(y);
}
}
}
HelperLibrary.Helpers.SQLHelper.AddBookToUser(App.GlobalUserList[UserList_List.SelectedIndex], NewUsersBooks);
}
来自 HelperLibrary.SqlHelper.cs 的 Sql 调用
public static void AddBookToUser(Models.User user, List<Models.Book> NewBooks)
{
List<Models.Book> OnlineUsersBooks = new List<Models.Book>();
OnlineUsersBooks = GetUsersBooks(user);
Debug.WriteLine("Online Count: " + OnlineUsersBooks.Count.ToString());
if (OnlineUsersBooks.Count > 0)
{
foreach (Models.Book y in NewBooks)
{
if (!(OnlineUsersBooks.Contains(y)))
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO Bookings VALUES (@UserId, @Title, @Author, @ISBN)", connection);
command.Parameters.AddWithValue("@UserId", user.GetUserID);
command.Parameters.AddWithValue("@Title", y.Title);
command.Parameters.AddWithValue("@Author", y.Author);
command.Parameters.AddWithValue("@ISBN", y.ISBN);
Debug.WriteLine(command.ToString());
command.Connection.Open();
command.ExecuteNonQuery();
}
}
}
}
else
{
foreach (Models.Book y in NewBooks)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("INSERT INTO Bookings VALUES (@UserId, @Title, @Author, @ISBN)", connection);
command.Parameters.AddWithValue("@UserId", user.GetUserID);
command.Parameters.AddWithValue("@Title", y.Title);
command.Parameters.AddWithValue("@Author", y.Author);
command.Parameters.AddWithValue("@ISBN", y.ISBN);
Debug.WriteLine(command.ToString());
command.Connection.Open();
command.ExecuteNonQuery();
}
}
}
}
GetUserBooks 方法经过测试并且工作正常,返回书籍列表。 我是否需要某种额外的覆盖来获得
if (!(OnlineUsersBooks.Contains(y)))
比较正确? 这是一个相当粗鲁的早期代码,请善待,仍有许多指标需要改进。
【问题讨论】:
-
你应该重写
Book类中的Equals和GetHashCode方法,这样Contains才能工作。
标签: c# list object compare contains