小编Mer*_*wer的帖子

ToLookup有多个键

有没有办法要求.ToLookupLINQ提供的功能有多个键?

我承认起初这似乎不直观,我期待没有实际的方法来做到这一点,但我希望有人知道一种方式.

我基本上希望能够通过两个值进行查找,例如a string和an int,并使用这两个值检索对象.

    public class MyClass {
      public string StringProp {get;set;}
      public int IntProp {get;set;}
      public object MoreData {get;set;}
    }

    public class Main {
      public void Main() {
        HashSet<MyClass> set = new HashSet<MyClass>();
        set.Add(new MyClass {StringProp = "a", IntProp = 1, MoreData = null});
        set.Add(new MyClass {StringProp = "c", IntProp = 4, MoreData = new object()});
        set.Add(new MyClass {StringProp = "a", IntProp = 2, MoreData = "upupdowndown"});
        set.Add(new MyClass {StringProp = "c", IntProp …
Run Code Online (Sandbox Code Playgroud)

.net c# lookup

16
推荐指数
3
解决办法
9660
查看次数

C#:更改实体框架的检索数据类型

我正在尝试将当前使用自定义DAO框架的项目转换为使用Entity Framework.系统非常大,因此对数据库(如果重要的是SQL Azure DB)本身的更改本身并不是特别可行,应尽可能避免.

问题出在ID列上.不幸的是,在创建系统时,有些表具有bigint数据类型,而有些表具有int- 但模型本身都来自具有longID 的基类.以前的框架能够处理这种情况,但我一直无法找到实现框架的方法.

以下是我能想到的最简单的例子:

public class Context : DbContext {
    public IDbSet<Foo> Foos {get;set;}
    public IDbSet<Bar> Bars {get;set;}
}
public abstract class BaseClass {
    public long ID;
}
public class Foo : BaseClass {
    ...
}
public class Bar : BaseClass {
    ...
}
SQL Table: Foo
+-------------+
| id : bigint |
| ...         |
+-------------+
SQL Table : Bar
+-------------+
| id : int    |
| ...         | …
Run Code Online (Sandbox Code Playgroud)

c# data-binding entity-framework sqldatatypes azure-sql-database

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

基于SQS消息触发SWF工作流

序言:我正在尝试为我认为是一个非常常见的用例提出一个提案,我想使用亚马逊的SWF和SQS来实现我的目标.可能还有其他服务可以更好地匹配我正在尝试的内容,因此如果您有任何建议,请随时将它们删除.

问题:最基本的需求是客户端(移动设备,Web服务器等)发布将异步处理而不响应客户端的消息 - 非常基本.

预期的实现是客户端将消息发布到预定的SQS队列.此时,客户端已完成.我们还有一个定义的SWF工作流程负责从队列中拾取消息,并且(在一些操作之后)将它放在Dynamo DB中 - 再次,所有这些都非常简单.

我似乎无法弄清楚的是,如何触发工作流程的启动.从我一直在阅读的工作流程来看,并不是一个无限期的过程.它有一个开始,一个中间和一个结尾.根据SWF文档,工作流程可以运行不超过一年(在SWF中设置超时值).

所以,我的问题是:如果我假设工作流代表一个消息处理流程,那么每当消息发布到SQS时,如何启动工作流程?

警告:我也研究过使用SNS而不是SQS.这将允许我运行可以订阅SNS的服务器,然后在发布通知时启动工作流.这当然是一种解决方案,但我想避免为单个Web服务设置服务器,然后我必须根据正在处理的消息数量来管理/扩展.我首先考虑使用SQS/SWF的原因是有一个我不必担心的自动缩放系统.

先感谢您.

amazon-sqs amazon-swf

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

使用类和接口定义通用对象

我在查找如何在处理泛型对象时要求类扩展了接口时遇到了一些麻烦.我发现这很难解释,但我希望能够在创建通用对象时需要一个类和一个接口.

我已经创造了我能想到的最简单的版本 - 希望能够比我能更好地解释我的问题.

abstract class Base
{}
class Class1 : Base, IComparable<Base>
{
    public int CompareTo(Base other)
    {
        return GetHashCode().CompareTo(other.GetHashCode());
    }
}
class Class2 : Base, IComparable<Base>
{
    public int CompareTo(Base other)
    {
        return GetHashCode().CompareTo(other.GetHashCode());
    }
}
class Class3 : Base
{}
class Program
{
    // This list should only accept objects that extend (Base & IComparable<Base>)
    public static List<Base> BigList = new List<Base>();

    static void Main(string[] args)
    {
        Class1 c1 = new Class1();
        Class2 c2 = new Class2(); …
Run Code Online (Sandbox Code Playgroud)

c# generics inheritance

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

多个字段的单个parsley.js错误消息

我正在寻找一种对一组输入字段使用单个欧芹验证错误消息的方法。主要示例是地址输入字段,但是我敢肯定其他人也可以提出类似的示例,其中可能有用。

<div id="error-container"></div>
<input name='address1' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
<input name='address2' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
<input name='address3' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
Run Code Online (Sandbox Code Playgroud)

现在使用上面的代码将导致3条不同的错误消息,但是我想设置一个方案,如果任何输入无效,将仅显示一条消息。

提前致谢

更新资料

在玩完JS控制台之后,我想我找到了一些可行的方法。下面的想法是防止欧芹对组进行任何UI更改,并在每次验证其中一个元素时触发对整个组的检查。这可能不是最好的处理方法,但似乎可以在我的单个测试用例中使用。我认为可以将其重新构造为验证器,以便将来将其用于其他输入集。

<div id="error-container"></div>
<input name='address1' data-parsley-ui-enabled='false' data-parsley-trigger='change' data-parsley-group='address-grp' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
<input name='address2' data-parsley-ui-enabled='false' data-parsley-trigger='change' data-parsley-group='address-grp' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
<input name='address3' data-parsley-ui-enabled='false' data-parsley-trigger='change' data-parsley-group='address-grp' data-parsley-maxlength="255" data-parsley-errors-container="#error-container">
Run Code Online (Sandbox Code Playgroud)
var $addressFields = $("[data-parsley-group='address-grp']");
addressFields.each(function(index, element) {
  $(element).parsley().on('field:validated', function(parsleyField) {
    var fieldOptions = parsleyField.actualizeOptions().options;
    var classHandler = fieldOptions.classHandler(parsleyField);
    var container = $(fieldOptions.errorsContainer);
    classHandler.removeClass(fieldOptions.successClass);
    classHandler.removeClass(fieldOptions.errorClass);
    var valid = parsleyField.parent.isValid(fieldOptions.group);
    if(valid) {
      console.log("Valid");
      classHandler.addClass(fieldOptions.successClass);
      container.html("");
    } else {
      console.log("Invalid");
      classHandler.addClass(fieldOptions.errorClass); …
Run Code Online (Sandbox Code Playgroud)

parsley.js

3
推荐指数
1
解决办法
1638
查看次数