C# 获取LINQ表达式中的对象
那里 我想得到文件名,在LINQ表达式中,我不确定是否可以这样问 请看代码,在这里找到如何在DB中获取文件名C# 获取LINQ表达式中的对象,c#,linq,C#,Linq,那里 我想得到文件名,在LINQ表达式中,我不确定是否可以这样问 请看代码,在这里找到如何在DB中获取文件名 您可以先尝试收集符合条件的每个db条目 public static IEnumerable<string> GetFiles(List<string> srcFiles) { var filePaths = new List<string>(); using (var db = new ContentMgmtContext())
您可以先尝试收集符合条件的每个db条目
public static IEnumerable<string> GetFiles(List<string> srcFiles)
{
var filePaths = new List<string>();
using (var db = new ContentMgmtContext())
{
foreach (var fileInfo in srcFiles.Select(file => new FileInfo(file)))
{
var matches = db.Files.Where(o => o.FileName.ToLower() == fileInfo.Name.ToLower() ||
o.FileSize == fileInfo.Length.ToString())
if (matches.Count() > 0)
{
foreach (var match in matches)
{
Console.WriteLine("{0} already exist in DB", fileInfo.Name);
Console.WriteLine("Conflict file in DB is: {0}",match.FileName);
}
}
else
{
filePaths.Add(fileInfo.FullName);
}
}
}
return filePaths;
}
要从数据库中保留匹配的对象,您需要将Any操作符替换为返回匹配的内容。例如
var match = db.Files.FirstOrDefault(o
=> o.FileName.ToLower() == fileInfo.Name.ToLower()
|| o.FileSize == fileInfo.Length.ToString());
if (match != null) {
// Found...
}
您正在尝试将新内容保存到数据库中吗?如果是这样,您需要将对象添加到数据库集中,然后告诉上下文保存更改。那么大小相同的文件被视为相等吗?@Richard这里我不想将任何信息保存到数据库中,但只需将一些文件的信息与数据库中的文件进行比较,如果文件的大小或名称相同,则它们被视为相等。我的问题是当文件相等时如何获取o.FileName。
var match = db.Files.FirstOrDefault(o
=> o.FileName.ToLower() == fileInfo.Name.ToLower()
|| o.FileSize == fileInfo.Length.ToString());
if (match != null) {
// Found...
}