这是一个noob问题 - 我仍然是C#和泛型的新手,对谓词,委托和lambda表达式来说是全新的......
我有一个"查询"课程,其中包含另一个名为"车辆"的课程的通用列表.我正在构建代码以从父查询添加/编辑/删除车辆.而目前,我特别关注删除.
从我到目前为止所看到的,似乎我可以使用Vehicles.RemoveAll()来删除具有特定VehicleID的项目或具有特定EnquiryID的所有项目.我的问题是理解如何提供.删除所有正确的谓词 - 我看到的例子过于简单化(或者由于我对谓词,委托和lambda表达式缺乏了解,我可能过于简单化).
因此,如果我有一辆List<Of Vehicle> Vehicles车在哪里有一个EnquiryID,我将如何使用Vehicles.RemoveAll()移除给定EnquiryID的所有车辆?
我知道有几种方法,所以我很想听到方法之间的差异 - 尽管我需要一些工作,这也是一个学习练习.
作为补充问题,通用列表是这些对象的最佳存储库吗?我的第一个倾向是收藏品,但看起来我已经过时了.当然,仿制药似乎更受欢迎,但我对其他替代品感到好奇.
我在Visual Studio 2008中有一个有多个项目的解决方案.其中一个项目是WCF项目.有时我只是想调试其他项目,但是当我按F5时,Visual Studio启动了wcfsvchost.exe来托管WCF项目,即使它不是"StartUp Project".
目前,每次我调试其他项目时,我都要卸载WCF项目以防止恼人的WcfSvcHost.exe主机弹出.但是,这不方便.有人知道更好的想法阻止WCF项目在调试模式下托管吗?
我试图为Visual Studio Installer项目创建自定义操作以修改配置文件的权限.
Installer.cs如下:
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
// Get path of our installation (e.g. TARGETDIR)
//string configPath = System.IO.Path.GetDirectoryName(Context.Parameters["AssemblyPath"]) + @"\config.xml";
string configPath = @"C:\Program Files\Blueberry\Serial Number Reservation\config.xml";
// Get a FileSecurity object that represents the current security settings.
FileSecurity fSecurity = File.GetAccessControl(configPath);
//Get SID for 'Everyone' - WellKnownSidType works in non-english systems
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, …Run Code Online (Sandbox Code Playgroud) 我正在尝试以客户指定的特定XML格式从数据库导出一些数据.我生成的XML将由第三方操纵(可能是由XSLT)来生成最终输出,但我想尽可能地将我的XML格式化为该格式.
客户要求每个产品的数据如下:
<product id="1234567890123">
<activeState partNumber="A1234567890" shipmentDate="20110518" />
</product>
Run Code Online (Sandbox Code Playgroud)
我现有的SQL是:
SELECT SerialNo as id,
PartNo as partNumber,
CONVERT(VARCHAR(8), GETDATE(), 112) AS shipmentDate,
FROM Products
WHERE SerialNo = @SerialNo
FOR XML PATH ('product'), TYPE)
Run Code Online (Sandbox Code Playgroud)
...呈现:
<product>
<id>100000000458</id>
<partNumber>10004905892</partNumber>
<shipmentDate>20120312</shipmentDate>
</product>
Run Code Online (Sandbox Code Playgroud)
我希望在XSLT中操作这些数据很容易,但纯粹作为一种智力练习,我想看看我能在SQL中走多远.我的第一个目标是简单地将id表示为产品的属性而不是作为子元素.我将要将渲染的activeState元素留给XSLT,但显然,如果我可以帮助他们的话,为什么不这样做呢......
有什么建议?
我注意到一个问题 - 感觉就像一个bug,但我怀疑是一个'功能' - 在SQL Server 2008中的SSMS中.
我打开了各种选项卡,例如一个表中的alter table脚本和另一个选项卡中查询该表的SProc,当我执行Alter Table脚本时,更改不会反映在另一个选项卡中的Intellisense中.
我可以创建新查询,但更改仍未反映在Intellisense中.如果我打开一个新的SSMS实例,则会反映这些更改,直到我进行进一步的更改.
但是,如果你过度使用Intellisense并推进修改后的表和代码,那么所有内容都会编译而没有抱怨(如预期的那样).
这是一个错误吗?一项功能?是否有某个地方改变了这种行为?我检查了选项,但看不到任何东西
我有一个父对象(DAL的一部分),其中包含List<t>子对象的collection().
当我将对象保存回DB时,我输入/更新父对象,然后循环遍历每个子对象.为了可维护性,我将孩子的所有代码放入一个单独的私有方法中.
我打算使用标准的ADO事务,但在我的旅行中,我偶然发现了TransactionScope对象,我相信这将使我能够在一个事务中将父方法中的所有数据库交互(以及子方法中的所有交互)包装起来.
到现在为止还挺好..?
所以接下来的问题是如何在TransactionScope中创建和使用连接.我听说使用多个连接,即使它们是相同的DB也可以强制TransactionScope认为它是一个分布式事务(涉及一些昂贵的DTC工作).
是这样吗?或者,正如我似乎在其他地方读到的那样,使用相同的连接字符串(它将自己用于连接池)的情况会好吗?
更实际的是,我......
更新:
虽然看起来我可以使用我常用的.NET3.5 +和SQL Server 2008+,但是这个项目的另一部分将使用Oracle(10g),所以我不妨练习一种可以跨项目使用的技术.
所以我只是简单地将连接传递给子方法.
选项1代码示例:
using (TransactionScope ts = new TransactionScope())
{
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
try
{
//create & add parameters to command
//save parent object to DB
cmd.ExecuteNonQuery();
if ((int)cmd.Parameters["@Result"].Value != 0)
{
//not ok
//rollback transaction
ts.Dispose();
return false;
}
else //enquiry saved OK
{
if …Run Code Online (Sandbox Code Playgroud) 我即将开始开发一个小型应用程序(C#),通过串行端口与PLC和测试单元进行通信 - 这是我第一次进入该领域.
本质上,我将向PLC发送信号以启动操作,然后我将等待来自测试单元(将与PLC独立通信)的操作结果返回ASCII字符串.
根据该字符串的内容,我可能想收听来自PLC的信号......
这对我来说都是新手,所以目前我只是在研究System.IO.Ports.SerialPort; 题外话:那里有第三部分产品,而不是简化与串口的互动,还是内置的课程和你一样好?我想的是易用性而不是更好的功能.
但是,在硬件可用于开发和测试之前几周,我想知道如何模拟与串口之间的通信,以便我可以开始开发我的应用程序?
[我还不知道PLC和PC是如何通信的 - 我知道它将是二进制而不是文本,但此刻,这就是我所知道的.]
我正在尝试首次使用ThemeRoller主题安装jQuery UI.我已经下载了jquery 1.4.2 ...我已经下载了几个主题的jQuery UI.我试图按照说明操作,但它们看似矛盾,似乎与下载的文件无关.
当我尝试使用datepicker时... datepicker功能有效,但它具有默认(灰色)样式.
此页面指的是不存在的文件夹/子文件夹/ css文件.此页面引用了不存在的ui.theme.css文件.
我收到的下载包括以下内容:
--development-bundle
---demos
----docs
----external
----themes
------base
------Redmond
----ui
------i8n
------minified
--js
Run Code Online (Sandbox Code Playgroud)
那么你把它放在哪里?我已将js复制到相应的目录并将其链接到我的页面.我也复制了themes/base文件夹,并链接到jquery.ui.all.css文件中.即使是包含的演示也仅显示默认(灰色)样式.
我哪里错了?
编辑:
对不起,我实际上是先尝试过Redmond,但是当它不起作用时,我尝试了Smoothness(随机选择 - 并没有意识到它是灰色的).我得到了相同的结果 - 灰色.[还纠正了上面的文件夹结构]
编辑2: 嗯,我已经弄明白了......最初的Smoothness或Redmond下载都没有CSS文件夹(从我上面描述的结构中可以看出).这两个主题都在几分钟之内下载并具有不同的文件大小).我刚刚尝试下载Cupertino,它有一个CSS文件夹 - 当我将它复制到我的应用程序时,我得到了合适的样式.
所以我再次尝试下载Redmond,并且看到 - 它现在还有一个CSS文件夹...我想知道我是否可能两次下载相同的主题,但它们有不同的时间戳和不同的文件大小......我很困惑.也许jQuery服务器只是一个大脑屁!
今天的金星让我走上了jquery-ui-1.8.custom.css的踪迹,最终导致了我的顿悟!
编辑3:
我刚刚开始下载Start和Humanity - 两个zip文件都没有CSS文件夹!
进一步挖掘,似乎我可能不会疯狂.
在构建项目时,我得到了这个神秘的错误:
'find_if'不是'std'的成员
find_if()以这种方式使用:std :: find_if(...).
知道它可能来自哪里?
我有一个问题反序列化一些XML; 由第三方提供的XML非常冗长,因此如果没有为特定元素设置值,它将提供并清空元素(例如<element1 />).
这是某些元素的问题,例如,那些用于存储整数的元素.我可以控制第三方,所以我可以让他们指定默认值(<myinteger>0</myinteger>)或者我可以让他们完全省略这些元素.这两个都应该避免这个问题.
但是,将来可能会出现这样的情况,即我们没有那么多控制权 - 在这种情况下,是否有一种方法可以通过装饰指定默认值?
[XmlElement("myinteger")=0???]
public int MyInteger
{
get
{
return myInteger;
}
set
{
myInteger= value;
}
}
Run Code Online (Sandbox Code Playgroud) c# serialization xml-serialization default-value xml-deserialization
c# ×5
.net ×1
build ×1
c++ ×1
delegates ×1
for-xml ×1
generics ×1
intellisense ×1
jquery ×1
jquery-ui ×1
lambda ×1
predicate ×1
serial-port ×1
simulation ×1
sql ×1
sql-server ×1
ssms ×1
t-sql ×1
themeroller ×1
transactions ×1
wcf ×1
xml ×1
xslt ×1