我正在做一个项目.我必须比较两个文件的内容,看看它们是否精确匹配.
在进行大量错误检查和验证之前,我的初稿是:
DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\TestArea\\");
FileInfo[] files = di.GetFiles(filename + ".*");
FileInfo outputFile = files.Where(f => f.Extension == ".out").Single<FileInfo>();
FileInfo expectedFile = files.Where(f => f.Extension == ".exp").Single <FileInfo>();
using (StreamReader outFile = new StreamReader(outputFile.OpenRead()))
{
using (StreamReader expFile = new StreamReader(expectedFile.OpenRead()))
{
while (!(outFile.EndOfStream || expFile.EndOfStream))
{
if (outFile.ReadLine() != expFile.ReadLine())
{
return false;
}
}
return (outFile.EndOfStream && expFile.EndOfStream);
}
}
Run Code Online (Sandbox Code Playgroud)
有嵌套using语句似乎有点奇怪.
有一个更好的方法吗?
这些Select和Where方法在Linq中可用.每个开发人员应该了解这两种方法?例如:何时使用一个优于另一个,使用一个优于另一个的任何优点,等等.
在我遇到的Web应用程序中,我发现以下代码在处理LinqToSQL时处理DataContext
public partial class DbDataContext
{
public static DbDataContext DB
{
get
{
if (HttpContext.Current.Items["DB"] == null)
HttpContext.Current.Items["DB"] = new DbDataContext();
return (DbDataContext)HttpContext.Current.Items["DB"];
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在以后执行此操作:
DbDataContext.DB.Accounts.Single(a => a.accountId == accountId).guid = newGuid;
DbDataContext.DB.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
在处理LinqToSQL时,我一直在研究最佳实践.
我不确定在处理DataContext不是ThreadSafe并保留它的静态副本时这个方法.
这是一个很好的方法来接受Web应用程序吗?
@ Longhorn213 - 根据你所说的内容,我读到的HttpContext就越多,我认为你是对的.但是在我继承的应用程序中,这让人感到困惑,因为在每个方法的开头,他们都在重新查询db以获取信息,然后修改datacontext的实例并在其上提交更改.
从这一点来看,我认为应该不鼓励使用这种方法,因为它给出的错误印象是datacontext是静态的并且在请求之间保持不变.如果未来的开发人员认为在方法开始时重新查询数据是因为他们认为数据已经存在,那么他们可能遇到问题而不理解原因.
所以我想我的问题是,如果在未来的发展中不鼓励这种方法吗?
每次查看数据库图表时,人们批评的一个领域是内部联接.他们很难看待它们,并且有一些问题要看内部连接是否确实需要存在.
简单库示例:
通常在SQL中使用三个表定义多对多关系:Book,Category,BookCategory.
在这种情况下,Category是一个包含两列的表:ID,CategoryName.
在这种情况下,我对Category表有疑问,是否需要?它可以用作查找表,并且在BookCategory表中存储CategoryName而不是CategoryID,以阻止必须执行额外的INNER JOIN.(对于这个问题,我们将忽略更改,删除任何CategoryNames)
问题是,内连接有什么坏处?在什么时候做一个负面的事情(一般指导如交易#,记录数,声明中的连接数等)?
从C#中的System.Drawing.Brushes集合中选择随机画笔的最佳方法是什么?
我想从我们公司的SharePoint站点创建一个C#ASP.Net应用程序和查询(read-on)信息.这有可能吗?如果可以的话怎么样?
我有一个包含以下代码行的视图:
//(DaysOfWeek is a bool[])
@Html.CheckBoxFor(m => m.Data.DaysOfWeek[0])
Run Code Online (Sandbox Code Playgroud)
它开始是假的.当用户"检查"该框并返回时,它返回true和false的值;
以下是作为表单数据的一部分传回的内容
Data.DaysOfWeek[0]:true
Data.DaysOfWeek[0]:false
Run Code Online (Sandbox Code Playgroud)
它为什么这样做?
c# ×4
.net ×2
asp.net ×2
select ×2
brush ×1
collections ×1
datacontext ×1
file ×1
inner-join ×1
linq ×1
linq-to-sql ×1
performance ×1
razor ×1
sharepoint ×1
sql ×1
using ×1
view ×1
where ×1