问题列表 - 第3332页

在C#中生成整数集

在F#中,只需说出[1..100]就可以生成一组数字.

我想在C#中做类似的事情.这是我到目前为止所提出的:

public static int[] To(this int start, int end)
{
    var result = new List<int>();
    for(int i = start; i <= end; i++)
        result.Add(i);
    return result.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我现在可以通过说1.To(100)创建一个集合

不幸的是,这并不像[1..100]那样可读.有没有人想出更好的方法在C#中做到这一点?如果它是小写的,它是否更具可读性?1.to(100),例如?或者,"To"是一个坏词?类似于1.Through(100)更具可读性吗?

只是寻找一些想法.有没有其他人想出更优雅的解决方案?

编辑: 阅读完回复后,我使用以下范围重新编写了我的To方法:

public static int[] To(this int start, int end)
{
    return Enumerable.Range(start, end - start + 1).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

我仍在寻找关于1.To(100)的可读性的想法

c# set

3
推荐指数
2
解决办法
1299
查看次数

检查C#new()初始化为null?

我在Koders上找到了这段代码:

private ServiceProvider SiteServiceProvider
{
    get
    {
        if (serviceProvider == null)
        {
            serviceProvider = new ServiceProvider(site as VSOLE.IServiceProvider);
            Debug.Assert(serviceProvider != null, "Unable to get ServiceProvider from site object.");
        }
        return serviceProvider;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道,有什么可能Debug.Assert(serviceProvider != null触发的方式吗?我的印象是new只能被异常中止,在这种情况下永远不会达到断言.

c# exception new-operator

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

C#扩展方法 - 到目前为止有多远?

Rails为Ruby引入了一些核心扩展3.days.from_now,就像你期望未来三天的日期一样.使用C#中的扩展方法,我们现在可以执行类似的操作:

static class Extensions
{
    public static TimeSpan Days(this int i)
    {
        return new TimeSpan(i, 0, 0, 0, 0);
    }

    public static DateTime FromNow(this TimeSpan ts)
    {
        return DateTime.Now.Add(ts);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(
            3.Days().FromNow()
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

或者怎么样:

static class Extensions
{
    public static IEnumerable<int> To(this int from, int to)
    {
        return Enumerable.Range(from, to - from + 1);
    }
}

class Program
{
    static void Main(string[] args)
    {
        foreach (var i …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods ruby-on-rails

15
推荐指数
3
解决办法
1583
查看次数

如何使用此Linq2Sql减少db往返次数?

我有以下的Linq2Sql,它为我的'SELECT'语句做了不止一次往返.我不知道为什么.首先是代码,然后解释: -

from p in db.Questions
select new Models.Question
{
    Title = p.Title,
    TagList = (from t in p.QuestionTags
               select t.Tag.Name).ToList()
}
Run Code Online (Sandbox Code Playgroud)

现在数据库是

问题<-one to many-> QuestionTags <-many to one-> Tag

所以一个问题有一个到多个标签,中间有一个链接表.这样,我可以多次重复使用标签.(如果有的话,我会对更好的架构持开放态度).

这样做会执行Linq2Sql生成的以下Sql代码

SELECT [t0].[QuestionId] AS [ID], etc....  <-- that's the good one
Run Code Online (Sandbox Code Playgroud)

.

exec sp_executesql N'SELECT [t1].[Name]
FROM [dbo].[QuestionTags] AS [t0]
INNER JOIN [dbo].[Tags] AS [t1] ON [t1].[TagId] = [t0].[TagId]
WHERE [t0].[QuestionId] = @x1',N'@x1 int',@x1=1
Run Code Online (Sandbox Code Playgroud)

第二个sql块被列为2x ..我认为这是因为第一个sql块返回两个结果,所以第二个sql块会针对第一个sql块的每个结果触发.

有什么方法可以使这个sql语句而不是1 + n,其中n =第一个查询的结果数?

更新:

我已经尝试了Eager和Lazy加载,并没有区别.

DataLoadOptions dataLoadOptions = new DataLoadOptions();
dataLoadOptions.LoadWith<Question>(x …
Run Code Online (Sandbox Code Playgroud)

.net linq-to-sql

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

在HQL where子句中使用对象类型

在我的域模型中,我有一个抽象类CommunicationChannelSpecification,它有子类,如FTPChannelSpecification,EMailChannelSpecification和WebserviceChannelSpecification.现在我想创建一个HQL查询,其中包含一个where子句,它将结果缩小到某些类型的通道规范.例如(用简单的英语)选择其类型出现在集合{FTPChannelSpecification,WebserviceChannelSpecification}中的所有CommunicationChannelSpecifications.

如何在HQL中实现这一目标?我正在使用NHibernate 2.0.1和每个子类的表继承映射策略...

谢谢!

帕斯卡尔

nhibernate hibernate hql

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

VS Post Build活动

我想实现一个执行以下操作的post build事件

  1. DLL输出的相对路径副本(1个文件,而不是所有调试jazz)
  2. 将输出DLL注册到GAC

这是怎么做到的?

build post-build-event visual-studio

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

YouTube常规播放器中的loadVideoById()(不是无边框)

我在网页上有一个YouTube播放器.我需要动态更改此播放器播放的视频.

使用YouTube的无边框播放器(相对)很简单.它有loadVideoById()完美的工作方法.问题是,无边框播放器没有任何控件(播放/暂停等).在常规YouTube播放器拥有这一切,但它不具备的loadVideoById()方法.

有没有办法将常规玩家的控制包含在无边框播放器中,或者loadVideoById()在常规播放器中实现方法?

谢谢.

javascript youtube api

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

为什么在重写Equals方法时重写GetHashCode很重要?

鉴于以下课程

public class Foo
{
    public int FooId { get; set; }
    public string FooName { get; set; }

    public override bool Equals(object obj)
    {
        Foo fooItem = obj as Foo;

        if (fooItem == null) 
        {
           return false;
        }

        return fooItem.FooId == this.FooId;
    }

    public override int GetHashCode()
    {
        // Which is preferred?

        return base.GetHashCode();

        //return this.FooId.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经覆盖了该Equals方法,因为它Foo代表了Foos表的一行.哪个是覆盖的首选方法GetHashCode

覆盖为什么重要GetHashCode

c# overriding hashcode

1371
推荐指数
13
解决办法
35万
查看次数

如何使TextBox上的Enter作为TAB按钮

我有几个文本框.我想让Enter按钮充当Tab.因此,当我将在一个文本框中时,按Enter将使我移动到下一个文本框.你能否告诉我如何实现这种方法而不在textbox类中添加任何代码(如果可能的话,没有覆盖等等)?

.net c# winforms

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

如何从Ruby中的较大字符串中提取单个字符(作为字符串)?

从字符串中检索单个字符作为单字符字符串的Ruby惯用方法是什么?str[n]当然有方法,但是(从Ruby 1.8开始)它返回一个字符代码作为fixnum,而不是字符串.你如何得到一个单字符串?

ruby

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