我有一个程序接收文件,进行一些数据处理,然后将结果与数据库中的结果进行比较。
对象
public class ReleaseDates
{
public int Id { get; set; }
public string MovieName { get; set; }
public string Country { get; set; }
public DateTime ReleaseDate { get; set; }
public string AlternateSource { get; set; }
}
MovieName
很可能与数据库中的内容相同,但ReleaseDate
可能会发生变化。
如何比较从数据库中获取的内容到ReleaseDate
对象列表?
示例
public bool Compare(ReleaseDates original, ReleaseDates newObj)
{
if (original.AlternateSource != newDate.AlternateSource)
{
return false;
}
if (original.Country != newDate.Country)
{
return false;
}
if (original.MovieName != newDate.MovieName)
{
return false;
}
if (original.ReleaseDate != newDate.ReleaseDate)
{
return false;
}
return true;
}
我如何从数据库中获取数据:
public List<ReleaseDates> GetAllReleaseDates()
{
return Db.ReleaseDates.ToList(); // Db is my DataContext
}
以上示例是比较ReleaseDates
的单个实例,但如何比较列表?我无法订购列表,因为会有相同的MovieName
重复但ReleaseDate
和AlternateSource
不同。
更新 对不起,我提出了错误的问题。
我想要做的是将数据库列表与新列表进行比较,如果它们不同,请将其从数据库中删除并插入新项目。
E.g。
public void Example(ReleaseDates A, ReleaseDates B)
{
if(A.MovieName != B.MovieName) // But need to compare all properties
{
Db.ReleaseDates.Remove(A);
Db.ReleaseDates.Add(B);
Db.SaveChanges();
}
}
答案 0 :(得分:0)
public bool Compare(List<ReleaseDates> A, List<ReleaseDates> B)
{
if ( A.Count != B.Count ) return false;
foreach (ReleaseDates aElement in A)
{
if ( !B.Any ( bElement => Compare( aElement, bElement ) return false;
}
}
答案 1 :(得分:0)
如果将集合视为集合会更好。您可以覆盖ReleaseDates类的equals方法(我觉得Movie是这个类的更好的名称)并将每个集合的元素添加到HashSet。
您可以使用HashSet.SetEquals方法检查是否相等。