小编sam*_*amy的帖子

在Linq中安全地解除引用FirstOrDefault调用c#

为了简洁起见,在我的代码中,我希望能够执行以下操作:拥有一个集合,找到匹配lambda表达式的第一个元素; 如果存在,则返回属性或函数的值.如果它不存在,则返回null.

更新的例子w.类

我们有一些东西

class Stuff
{
    public int Id { get; set; }
    public string Value { get; set; }
    public DateTime? ExecutionTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是在调用它时很好地返回

var list = new Stuff[] { new Stuff() { Id = 1, Value = "label", ExecutionTime = DateTime.Now } };

// would return the value of ExecutionTime for the element in the list
var ExistingTime = list.FirstOrDefault(s => s.Value.Contains("ab")).ExecutionTime;

// would return null
var NotExistingTime = list.FirstOrDefault(s => s.Value.Contains("zzz")).ExecutionTime; 
Run Code Online (Sandbox Code Playgroud)

是否可以使用一些linq-syntax-fu或者我必须在继续之前明确检查返回值? …

c# linq syntax

17
推荐指数
2
解决办法
3173
查看次数

.net中的readonly属性和函数有什么区别?

除了架构观点,我想知道.net在readonly属性和函数之间是否存在任何差异.属性只是功能的概念包装吗?

    Private m_Property As String 
    Public ReadOnly Property PropertyGet() As String
        Get
            Return m_Property
        End Get
    End Property

    Public Function FunctionGet() As String
        Return m_Property
    End Function
Run Code Online (Sandbox Code Playgroud)

拆解IL显示除了名称之外没有区别,但是在另一个级别有差异吗?吸气剂只是一个简短的功能(!?)手?


Edit:哇,我真的很抱歉无法标记多个答案.

第一个回答指出使用属性序列化是通向启蒙的道路,因为我已经完全放弃了这个方面.在此之前,财产与功能的解释为"是"与"确实"感觉是任意的.现在,我更多地了解它.

我认为关于财产不是耗时的共识源于"是"/可序列化的概念.如果我的财产与数据库进行对话以存储"是"值,则会以可怕的方式中断.

.net grammar specifications

16
推荐指数
4
解决办法
3440
查看次数

如何在psake中调用exec到具有可变路径的可执行文件?

我似乎无法在我的psake部署脚本中正确调用此可执行文件.

如果我这样做:

exec { "$ArchiverOutputDir\NServiceBus.Host.exe /install" }
Run Code Online (Sandbox Code Playgroud)

它只是输出这个(显然没有调用可执行文件 - 只输出该表达式的值):

c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

exec { c:\ReloDotNet2_ServiceEndpoints\Archiver\NServiceBus.Host.exe /install }
Run Code Online (Sandbox Code Playgroud)

我从可执行文件中获得了预期的输出.

如何在psake中可执行文件的路径中使用变量正确调用可执行文件?如果这实际上是PowerShell问题,请随时更正问题以反映该洞察力.

一世

powershell psake

12
推荐指数
1
解决办法
2469
查看次数

实体框架4.1 Codefirst:删除一对多子项时出现"给定多重性约束"错误

我在Entity Framework 4.1中有以下类(这些类已被修剪以保持代码可读)

public class MetaInformation
{
    public int Id { get; set; }
    public virtual MetaInformationObject RelatedTo { get; set; }
}

public abstract class MetaInformationObject
{
    public int Id { get; set; }
    public virtual List<MetaInformation> MetaInformations { get; set; }
}

[Table("Hardwares")]
public class Hardware : MetaInformationObject
{
    [MaxLength(100)]
    public string Name { get; set; }
}

public class Inventory
{
    public int Id { get; set; }
    public virtual List<Machine> Machines { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# one-to-many entity-framework-4

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

log4net - 如何过滤掉包含指定文本的异常?

我使用log4net来记录异常,它通常可以正常工作.但我希望能够过滤掉包含特定文本字符串的异常.

我发现了这个实现过滤器的例子,但它与我想要的相反; 它只包含具有指定字符串的消息.我想排除指定的字符串.

<filter type="log4net.Filter.StringMatchFilter">
  <stringToMatch value="My Exclude String" />
</filter>

<filter type="log4net.Filter.DenyAllFilter" />
Run Code Online (Sandbox Code Playgroud)

是否可以排除指定的字符串?

logging log4net error-logging

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

确定形状边界的点的算法 - 使用javascript

我正在开发一个html地图制作工具,我想让我们的用户能够通过点击一个区域来快速创建形状,而不是让他们手动定义形状.

首先让我们来看看我们目前正在做什么.用户想要映射区域A.他要做的是在每个点上多次单击以定义形状的边界.

这里可能会有一千次点击而死亡

我想知道是否有一种算法可以让用户点击A区域并确定要处理哪些点,以便根据图像对比度在形状边界之后创建接近最佳的形状.

我处理这个问题的第一个想法是确定从点击点向上,向左,向下,向右的最远点.将这四点作为我们的起点.然后对于每个片段,使用新点细分它并沿着矢量法线移动新点,直到我碰到对比边缘.

当然,这种方法有一些限制,但这是我可以假设的

  • 形状可以是凸面,凹面等......
  • 对比度应该是黑色对白色,但为了处理可能的演变,对比度阈值应该是可配置的.
  • 在我上面一直在考虑的例子中,显然存在细分深度的限制以便不杀死用户机器

如果你们中的任何人知道这样的算法,那将是非常好的.

javascript algorithm canvas image-processing

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

正则表达式:找到两个不包围文本中另一个元素的元素

我需要从一些文本中找到格式错误的HTML内容; 我们让用户添加strongem标记,但他们并不总是正确地关闭它们

This is some <b>correct</b> formatting
This is some <b>incorrect<b> formatting
Run Code Online (Sandbox Code Playgroud)

我想捕获格式不正确的实例,即开始标记后面没有结束标记的情况.我开始使用负面前瞻,但到目前为止还没有取得多大成功

<b>(?!.*?<\/b>.*?)<b>
Run Code Online (Sandbox Code Playgroud)
  • <b> 获得开场标记
  • (?! 消极的预测
    • .*? 什么,但不贪婪
    • <\/b> 结束标记
    • .*? 什么,但不贪婪
  • ) 关闭前瞻
  • <b> 另一个开场标签

知道我怎么能这样做吗?

附录:我知道托尼的小马,但我觉得它现在不会出现.这个问题可以被替换为"我想找到两个出现的单词"zoinx",其中"palantir"之间没有出现"与HTML无关的"

regex

5
推荐指数
1
解决办法
53
查看次数

Nhibernate:在子查询上左外连接

更新需要2

这是我正在使用的两个查询(在两个查询中都省略了分页)

我想得到以下查询

SELECT * 
FROM product
LEFT OUTER JOIN 
(
    SELECT * 
    FROM Cart 
    LEFT OUTER JOIN 
    cartproducts 
    ON Cart.Id = cartproducts.Cart_id 
    WHERE Cart.username = 'user'
)
AS CartFiltered 
ON product.Id = CartFiltered.product_id
Run Code Online (Sandbox Code Playgroud)

但我似乎总是得到

SELECT * 
FROM product  
LEFT OUTER JOIN 
cartproducts 
ON product.Id = cartproducts.Product_id 
LEFT OUTER JOIN
Cart
ON
cartproducts.cart_id = cart.id
WHERE Cart.username = 'user'
Run Code Online (Sandbox Code Playgroud)

我如何设法创建第一种查询?我希望我的问题更清楚:)缺乏清晰度有时候是我的大敌:p


更新:

FWIW,我仍然没有找到答案,我正在加载分页产品数据和整个购物车以显示正确的对象.原始解决方案,但它的工作原理,它击败了我一直试图让Criteria API认识我作为它的主人的组合.如果有人碰巧指出我正确的方向,我会很感兴趣;)


你好,

我很难在Criteria API中编写以下查询,我真的没有看到如何做到这一点:我希望有些人可以提供帮助.

在数据库上,我有产品.这些产品可以在许多推车(每个用户一个推车),每个推车可以包含许多产品,所以我们有很多关系.我想显示每个产品的列表,旁边还有一个小图标,告知用户该特定产品已经在购物车中.我做的是我向NHibernate询问我的产品,并在购物车所有者过滤的推车上做左外连接.

Dim critPage As ICriteria = Session.CreateCriteria(GetType(Product)) _
.SetFirstResult(pageNumber * itemsPerPage).SetMaxResults(itemsPerPage) _
.CreateCriteria("Carts", "c", …
Run Code Online (Sandbox Code Playgroud)

nhibernate subquery left-join

4
推荐指数
1
解决办法
8237
查看次数

客户端的安全问题(Javascript)

我们将为大型网站设计和实现UI.该网站的所有者对安全问题非常谨慎.我想知道在Javascript设计和编码时是否有客户端安全建议的检查表.

javascript security

4
推荐指数
1
解决办法
919
查看次数

如何在psake中正确使用-parameters和-properties?

我有以下psake脚本

properties {
    $ApplicationName = "test"
    $ApplicationPath = "c:\this\is\$ApplicationName"
}

Task test {
    "ApplicationName = $ApplicationName"
    "ApplicationPath = $ApplicationPath"
}
Run Code Online (Sandbox Code Playgroud)

我想只将ApplicationName传递给脚本,以避免键入整个应用程序路径.但是当我使用-parameters标志时,不会对属性应用任何更改

Invoke-psake .\script.ps1 -parameters @{ApplicationName = "another_test"} test

ApplicationName = test
ApplicationPath = c:\this\is\test
Run Code Online (Sandbox Code Playgroud)

这听起来不对,因为应该在任何属性块之前评估参数.当我使用该-properties标志时,应用程序名称被更改,但不是路径

Invoke-psake .\script.ps1 -properties @{ApplicationName = "another_test"} test

ApplicationName = another_test
ApplicationPath = c:\this\is\test
Run Code Online (Sandbox Code Playgroud)

所以属性已经初始化了,但不应该-parameters覆盖这种行为?

psake

4
推荐指数
1
解决办法
2013
查看次数