小编mus*_*fan的帖子

自动检查LINQ查询的NULL关系

我正在使用LINQ to SQL来处理我正在处理的应用程序的数据库查询.

出于这个例子的目的,假设我有一些像这样的表

- Company
- Product
- Item
- Order
Run Code Online (Sandbox Code Playgroud)

并且假设a Company有0或更多Products,a Product有0或更多Items,a Item有0或更多Orders.

现在让我这样获得一个列表Orders,例如:

IQueryable<Order> myOrders = GetMyOrders();
Run Code Online (Sandbox Code Playgroud)

现在让我说我想查询一个特定的订单Company.Name,但是有一个情况,每个表的父ID都可以NULL(我知道这对我的示例数据来说似乎不合逻辑,但它只是一个例子)

假设没有NULL父ID我可以这样做:

var filteredOrders = myOrders.Where(x => x.Item.Product.Company.Name == "Company1");
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,因为可能有NULL父ID值,我需要检查每个父对象以确保它不是null在查询下一个父对象之前(否则我将得到一个异常).所以我做了类似的事情:

var filteredOrders = myOrders.Where(x => 
    x.Item != null &&
    x.Item.Product != null &&
    x.Item.Product.Company != null &&
    x.Item.Product.Company.Name == "Company1");
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:除了必须包含所有空检查之外,还有更好的方法(在可读性和编码的简易性方面)吗?在此过程中发现的任何空父项都应导致从结果列表中排除.

请不要阻止空父母的建议,数据库不会改变(无论如何都是完全有效的)

c# linq linq-to-sql

11
推荐指数
1
解决办法
1653
查看次数

使用数组表示的二叉树

考虑以下数组,声称代表了二叉树:

[1,2,5,6,-1,8,11]

鉴于值为-1的索引表示根元素,我在下面的问题:

a)这实际上是如何表示的?

我们应该遵循以下公式(来自此链接的来源)来找出树吗?三个简单的公式允许您从父项的索引转到其子项的索引,反之亦然:

* if index(parent) = N, index(left child) = 2*N+1
* if index(parent) = N, index(right child) = 2*N+2
* if index(child) = N, index(parent) = (N-1)/2 (integer division with truncation)
Run Code Online (Sandbox Code Playgroud)

如果我们使用上面的公式,那么index(root)= 3,index(left child)= 7,它不存在.

b)知道它是否是完整的二叉树是否重要?

binary-tree data-structures

9
推荐指数
2
解决办法
5万
查看次数

同时使用实体框架与SQL Server和SQLite数据库

我有一个用于测试目的的C#.Net 4.0控制台应用程序(使用VS 2012).我的目标是能够创建一个可以在MS SQL Server数据库和SQLite数据库上使用的单个Entity Framework .edmx文件.基本上,我想使用相同的实体模型类和集合进行查询,但很容易就能随意在两个不同的数据库之间切换.

到目前为止,我已经通过连接到MS Server数据库并添加我的单个测试表(称为Contact)创建了我的.edmx文件.有了这个,我可以使用以下代码从我的表中获取数据:

var db = new DataAccess.ContactTestEntities();
foreach (var contact in db.Contacts)
    Console.WriteLine("" + contact.ID + ". " + contact.FirstName + " " + contact.LastName);
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够使用相同的代码,而是连接到SQLite数据库.我编写了一个部分类,允许我更改contruction上的连接字符串,如下所示:

var db = new DataAccess.ContactTestEntities("MY SQLITE CONNECTION STRING");
Run Code Online (Sandbox Code Playgroud)

它在这方面工作正常,除了在尝试查询数据库时我收到此错误:

无法将类型为"System.Data.SQLite.SQLiteConnection"的对象强制转换为"System.Data.SqlClient.SqlConnection".

我试图找到一个解决方案,但已经走到了尽头,我正在努力寻找下一步.

这就是我的问题:我怎样才能解决这个问题?或者我可以采取另一种方法来获得相同的预期结果?


堆栈跟踪以上异常:

处于System.Data.Ents.Clmand.AntityClient.EntityCommandDefinition.ExecuteStoreCommands的System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand,EntityTransaction entityTransaction,DbCommand storeProviderCommand)中的System.Data.SqlClient.SqlCommand.set_DbConnection(DbConnection值)(EntityCommand entityCommand,的CommandBehavior行为)在System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute [TResultType](ObjectContext的上下文中,ObjectParameterCollection的parameterValues)在System.Data.Objects.ObjectQuery 1.GetResults(Nullable1 forMergeOption)在System.Data.Objects.ObjectQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Data.Entity.Internal.Linq.InternalQuery1.GetEnumerator()
在System.Data.Entity.Internal.Linq.InternalSet1.GetEnumerator()
at System.Data.Entity.Infrastructure.DbQuery
1.System.Collections.Generic.IEnumerable.GetEnumerator()在SQLiteTest.Program.ReadFromSqlite()在C:\开发\项目\测试应用程序\ SQLiteTest\SQLiteTest \的Program.cs:行82 SQLiteTest.Program.ReadTests()在C:\开发\项目\测试应用程序\ SQLiteTest\SQLiteTest \的Program.cs:行63 SQLiteTest.Program.ProcessMenu()在C:\开发\项目\测试应用程序\ SQLiteTest\SQLiteTest \的Program.cs:行36在SQLiteTest.Program.Main(字串[] args)在C:\发展\项目\测试应用\ SQLiteTest\SQLiteTest\Program.cs的:在System.AppDomain._nExecuteAssembly线14(RuntimeAssembly组件,字串[] args)在微软.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ExecutionContext.RunInternal(的ExecutionContext的ExecutionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run System.Threading.ThreadHelper.ThreadStart()中的(ExecutionContext executionContext,ContextCallback回调,对象状态)

c# sql-server sqlite entity-framework

9
推荐指数
1
解决办法
2244
查看次数

Windows 10中的Visual Studio管理员模式

我不确定我的确切问题,但情况如下:

我有一个应用程序(WinForms,C#.Net),我在Visual Studio 2012中开发.它做了很多事情,但重要的是它需要从某个位置读取文件.

在这种情况下,文件的位置在服务器上,我的机器具有用于访问文件的映射网络驱动器设置.我可以使用Windows资源管理器手动导航到文件.

我的代码中有以下行突出显示问题:

System.IO.File.Exists("X:\\A Folder\\a_file.txt");
Run Code Online (Sandbox Code Playgroud)

该文件确实存在于该位置.但是,这就是出现问题的地方:如果我构建解决方案并直接从"bin"文件夹运行.exe(双击).代码很好,它找到了文件.但是,如果我使用visual studio运行它,那么我会得到一个"找不到文件"的例外.

我认为Visual Studio以"管理员"模式运行(我忘记了为什么我需要这个,但我这样做).现在,如果您认为"管理员"帐户没有映射"X:\"驱动器,这是有道理的.但是,在我上周升级到Windows 10之前,这一直不是问题.

所以我的问题是:

Visual Studio Administrator模式在Windows 10中的工作方式是否有所不同?在这种情况下,它是否以不同方式处理映射的网络驱

值得注意的是我从Windows 7升级,因此无法确认此问题是否也出现在8和8.1中.

在任何人问之前,让我们说它必须是一个映射驱动器.不允许UNC路径!

administrator visual-studio visual-studio-2012 windows-10

9
推荐指数
1
解决办法
1066
查看次数

JQuery:获取被点击元素的父元素id

我有这样的div:

<div id="popupDiv1" class="popupDivClass">
    <a id="popupDivClose" class="popupCloseClass">x</a>
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击'x'时(我想运行一个jquery函数disablePopup(id);,其中id是相应的popupDiv的id)(我有很多popupDiv,每个都有它自己的X按钮.

为了做到这一点,我实现了以下内容

$(".popupCloseClass").click(function (event) {
    var buttonID = $(event.target).attr("id");
    var id = $( buttonID).closest("div").attr("id");
disablePopup(id);
});
Run Code Online (Sandbox Code Playgroud)

基本上我得到了popupCloseClass的id,然后我通过最接近的方法得到它的id(相应的popupDiv)的id.然后我调用disablePopup.

但这不起作用.

我甚至尝试使用该var buttonID = $(buttonID).parent().attr("id");方法,但也没有工作.

我也试过了 var id = this.id;

任何帮助是极大的赞赏

谢谢

html asp.net jquery parent

8
推荐指数
1
解决办法
2万
查看次数

SplitContainer面板调整大小问题

一般问题

该应用程序是C#WinForms .Net 4.0.

我有一个SplitContainer占据大部分形式的东西,它被设置为各个方向的锚点,所以它与表格一起重新调整大小.左侧面板(Panel1)有一个简单的菜单,这里没有问题.右侧面板(Panel2)更复杂,包含许多嵌套的选项卡控件(包含大量控件) - 它非常复杂,但并没有改变.

问题是重新调整表单大小不是很好.事实上,如果您通过缓慢拖动边缘来调整大小然后它可以正常工作,但快速拖动或使用"恢复"按钮(窗体的右上角)然后问题发生.


我的控制层次结构

以下是我的控件层次结构的一个简单示例,它绝对是一个缩减版本,但突出显示嵌套的选项卡控件,它可能有助于复制:

  • 形成
    • 拆分容器(锚点:顶部,左侧,底部,右侧)
      • SC Panel1(最小宽度:300)
        • TreeViewControl(忘记它叫什么)
      • SC Panel2
        • 面板(锚点:顶部,左侧,底部,右侧)
          • 选项卡控件(锚点:顶部,左侧,底部,右侧)
            • 选项卡控件w /许多页面溢出屏幕并需要导航按钮显示在右上角(锚点:顶部,左侧,底部,右侧)

调试细节

经过一些调试后,看起来它实际上是Panel2(拆分容器的子代)没有正确调整大小,实际SplitContainer本身调整得很好.

以下是显示此信息的调试值...

全尺寸表格,在调整大小之前:

splitContainerMain.Width: 1479
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
Run Code Online (Sandbox Code Playgroud)

如预期的那样,splitContainerMain.Panel2.Width小于splitContainerMain.Width.

调整问题后调整大小:

splitContainerMain.Width: 815
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
Run Code Online (Sandbox Code Playgroud)

可以看出,splitContainerMain.Width已根据需要重新调整大小,但splitContainerMain.Panel2.Width其后的孩子却没有.

注意:请记住,如果我手动调整窗体大小,宽度会正确更新 - 这不是我没有正确设置任何锚点的问题.


我的努力到目前为止

我想知道问题是否与此问题有关,但我不准备创建一个新的"MySplitContainer"来尝试解决这个问题.

我试图做的是使用各种Form resize事件并尝试手动设置宽度,但无济于事.我想我想尝试的是Panel2.Width在某种事件中设置值.


我在寻找什么

  • 无论如何都要强制splitContainerMain.Panel2.WidthsplitContainerMain尺寸变化时正确调整大小?
  • 或者,我该如何计算Panel2.Width应该是什么?如何从Form.Resize …

c# splitcontainer winforms

8
推荐指数
1
解决办法
2万
查看次数

Windows服务 - 配置文件

我知道之前可能已经提出这个问题,但我似乎找不到合适的答案.

我有一个名为foob​​ar.exe的Windows服务.我在同一文件夹中有一个名为foob​​ar.exe.config的应用程序配置文件.

配置文件是否仅在启动时读取?

我想更改配置文件而不必重新启动服务,但这是我可以读取新设置的唯一方法.

我究竟做错了什么?

Windows服务可以有动态配置文件吗?

.net windows-services

7
推荐指数
1
解决办法
8932
查看次数

ASP.Net MVC 3:反向授权属性

我有一个简单的ASP.Net MVC 3应用程序,它有一些控制器和一些很好的操作.

现在,由于这是基于用户的应用程序,因此大多数控制器操作都需要对用户进行身份验证.MVC使用内置的Authorize属性处理这个问题,您可以使用该属性单独装饰控制器和/或操作.

最棒的是你可以将属性应用于控制器,并且给定控制器的所有操作也将应用它 - 保存了大量的输入;)

但我有一个控制器,比方说,10个动作.但我希望其中一个操作没有应用Authorize属性.

是的,我可以将该属性应用于其他9并将其从控制器中删除,这将完全符合我的需要.但有没有办法让它应用于控制器,只是选择排除其中一个动作?

实际上,会想要......

[!Authorize] 要么 [NotAuthorize]

我知道我可以创建一个可以完成这项工作的自定义工具,但我想知道的是,是否有内置方法可以做到这一点?或者我是否必须将该属性应用于所有其他9个其他操作?

authentication asp.net-mvc attributes authorize-attribute

7
推荐指数
2
解决办法
1951
查看次数

C#禁用关键字功能

C#中有没有办法在代码中禁用关键字的功能?在我的情况下,我想将我的一个枚举项定义为浮动,这显然使Visual Studio有点混乱:)

public enum ValidationType
{
    email,
    number,
    float,
    range
}
Run Code Online (Sandbox Code Playgroud)

c# enums keyword

7
推荐指数
3
解决办法
178
查看次数

xcode将NSString拆分为其他NSStrings

{"Title":"Chatroom","Year":"2010","Rated":"R","Released":"11 Aug 2010","Genre":"Drama, Thriller","Director":"Hideo Nakata","Writer":"Enda Walsh, Enda Walsh","Actors":"Aaron Johnson, Imogen Poots, Matthew Beard, Hannah Murray","Plot":"A group of teenagers encourage each other's bad behavior.","Poster":"http://ia.media-imdb.com/images/M/MV5BMjE0MjM5MDM2MF5BMl5BanBnXkFtZTcwMzg1MzY0Mw@@._V1._SX320.jpg","Runtime":"1 hr 37 mins","Rating":"5.3","Votes":"1000","ID":"tt1319704","Response":"True"}
Run Code Online (Sandbox Code Playgroud)

我用nsstring得到这个数据,我的问题是如何分割数据,分离到另一个nsstrings,但我想做逗号这么多nsstrings

xcode split nsstring

6
推荐指数
1
解决办法
2万
查看次数