小编cor*_*erm的帖子

使用LINQ生成排列

我有一套必须安排的产品.有P个产品,每个产品从1到P索引.每个产品可以安排到0到T的时间段.我需要构建满足以下约束的产品计划的所有排列:

If p1.Index > p2.Index then p1.Schedule >= p2.Schedule.
Run Code Online (Sandbox Code Playgroud)

我正在努力构建迭代器.当产品数量是已知常量时,我​​知道如何通过LINQ执行此操作,但是当产品数量是输入参数时,我不确定如何生成此查询.

理想情况下,我想使用yield语法来构造此迭代器.

public class PotentialSchedule()
{
      public PotentialSchedule(int[] schedulePermutation)
      {
             _schedulePermutation = schedulePermutation;
      }
      private readonly int[] _schedulePermutation;
}


private int _numberProducts = ...;
public IEnumerator<PotentialSchedule> GetEnumerator()
{
     int[] permutation = new int[_numberProducts];
     //Generate all permutation combinations here -- how?
     yield return new PotentialSchedule(permutation);
}
Run Code Online (Sandbox Code Playgroud)

编辑:_numberProducts = 2时的示例

public IEnumerable<PotentialSchedule> GetEnumerator()
{
    var query = from p1 in Enumerable.Range(0,T)
                from p2 in Enumerable.Range(p2,T)
                select new { P1 = p1, P2 = …
Run Code Online (Sandbox Code Playgroud)

c# linq permutation

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

正则表达式替换无效字符

我没有太多使用RegEx的经验,所以我使用许多链式String.Replace()调用来删除不需要的字符 - 我可以编写一个RegEx来简化这个吗?

string messyText = GetText();
string cleanText = messyText.Trim()
         .ToUpper()
         .Replace(",", "")
         .Replace(":", "")
         .Replace(".", "")
         .Replace(";", "")
         .Replace("/", "")
         .Replace("\\", "")
         .Replace("\n", "")
         .Replace("\t", "")
         .Replace("\r", "")
         .Replace(Environment.NewLine, "")
         .Replace(" ", "");
Run Code Online (Sandbox Code Playgroud)

谢谢

c# regex

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

我可以在只读对象字段后安全地清理吗?

假设我有一个带有对象字段的类.调用Dispose()时,我想清除对该对象的引用.私有字段只能设置一次,所以理想情况下我希望它只是readonly,但如果它是re​​adonly,当我尝试在Dispose()期间释放对象的引用时,会出现编译时错误.理想情况下,我希望安全处置并将_value字段标记为只读.这是可能的还是必要的?

public class Foo : IDisposable
{
      public Foo(object value)
      {
            _value = value;
      }

      public object Value { get { return _value; } }
      private readonly object _value;

      public void Dispose()
      {
            //Cleanup here
            _value = null     // causes compile time error
      }
}
Run Code Online (Sandbox Code Playgroud)

c# dispose readonly

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

生成基于任务的客户端WCF服务调用.NET 4.0

在Visual Studio 2012中,有一个方便的"生成基于任务的操作"选项,您可以使用该选项生成Task和生成Task<T>WCF服务调用.

我正在使用Microsoft.Bcl.Async NuGet包来利用我的.NET 4.0项目中的async/await.但是,我似乎无法使用VS 2012中的配置服务引用向导生成基于任务的操作(该选项已禁用).

据我所知,这只适用于项目的目标是.NET 4.5.有谁知道用.NET 4.0客户端生成基于任务的操作的方法?

wcf .net-4.0 async-await visual-studio-2012

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

以编程方式确定是否通过调试器启动.NET WinForms应用程序

我想知道是否有一种编程方式在运行时确定应用程序是通过调试器启动还是启动已安装的应用程序版本.我的应用程序目前正通过ClickOnce部署.

当应用程序在调试模式与生产模式下运行时,我想要更改某些设置.

我知道构建配置解决方案 - 我很好奇是否有一种编程方式来确定这些信息

谢谢

.net c# debugging visual-studio

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

JSON Schema - 根据输入属性指定字符串长度

是否可以使用 JSON Schema 指定取决于正在验证的项目中的属性值的字符串长度?

例如,我有一个“foo”属性值为 3 的文档。我想确保“bar”属性是一个大小至少为 3 的字符串

示例 JSON

{
"foo": 3,
"bar": "111"
}
Run Code Online (Sandbox Code Playgroud)

JSON 架构

{
   "properties" : {
      "foo": {
         "type": "integer",
         "minimum": 1
       }
      "bar": {
         "type": "string",
         "minLength": "{$foo}"
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

jsonschema

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

将属性添加到DataColumn

我正在创建一个报告组件,它接受IEnumerable输入并执行一些转换和聚合,并返回一个IEnumerable具有动态列数的新组件.我正在使用ADO.NET,因为很容易DataTable使用适当的列创建一个.

转换后的IEnumerable内容将发送到报告可视化组件,该组件使用存储在"属性"中的信息来很好地格式化结果.一旦应用了属性,就没有必要删除或更改属性.

我的问题是:是否可以将a Attribute与a 关联DataColumn以便PropertyDescriptorADO.NET发出的DataView包含这些属性?

后续问题:如果ADO.NET无法实现这一点,我可以使用其他库来完成此任务吗?

编辑:为清晰起见更新我希望能够做到这样的事情:

DataTable dt = new DataTable();
DataColumn example = dt.Columns.Add("Test",typeof(double));

//This is the functionality I am looking for ideally
example.AddAttribute(new CustomAttribute("Hello"));

public class CustomAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)

c# ado.net metadata

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

将查询理解翻译为LINQ中的Enumerable扩展方法

如何将以下查询转换为函数调用?我知道编译器在幕后执行此操作但不知道如何查看结果

        var query = from item in Enumerable.Range(0, 10)
                    from item2 in Enumerable.Range(item, 10)
                    from item3 in Enumerable.Range(item2, 10)
                    select new { item, item2, item3 };
Run Code Online (Sandbox Code Playgroud)

c# linq list-comprehension

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