小编Hau*_*uge的帖子

如何在mercurial中添加subrepo到现有存储库

将现有存储库添加到另一个现有存储库作为子服务器的最佳/最简单方法(或甚至可能)是什么?

情况是我有一个现有的(主)项目,我想在其中包含一个库项目,以便我可以从主项目编辑库项目,并在进行主项目时将更改提交到库项目.

另外:我是否需要克隆/推/拉到原始库项目,还是在主项目中提交时自动完成?

关于
Jesper Hauge

mercurial

10
推荐指数
1
解决办法
4312
查看次数

从具有不同<T>的通用列表中随机选择

我正在寻找最好的方法来从List中获取一个随机元素,其中T将是通过基类无关的不同类型的对象.

我一直在为List创建一个扩展方法,或者是一个收到List的帮助方法,但我还是没能把它放在一起.每次我遇到处理T的问题我都不知道是什么.

是否可以在不创建接口或基类的情况下执行此操作?因为我看不到为不同的T实现基类或接口的任何有意义的方法.

关于Jesper Hauge


在更多关于泛型方法的阅读之后,我设法自己编写了一些代码.这是我的解决方案:

public static class ListExt
{
    public static T RandomItem<T>(this List<T> list)
    {
        if (list.Count == 0)
            return default(T);
        if (list.Count == 1)
            return list[0];
        Random rnd = new Random(DateTime.Now.Millisecond);
        return list[(rnd.Next(0, list.Count))];
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一种扩展方法,可以使用以下代码从任何List中选择随机项:

private Picture SelectTopPic()
{
    List<Picture> pictures = GetPictureList();
    return pictures.RandomItem();
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

升级到RC后,创建多对多关系的实体失败

我有一个项目有3个简单的表,几个POCO类,以及用代码创建的DBContext,没有edml文件.下面的代码设置用于处理实体框架代码的beta - 首先,我编辑了DbContext代码,因为模型构建器从beta改为RC

表(简单表多对多表的字段声明为具有级联删除的外键):

CREATE TABLE [dbo].[Bookings](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [StartDate] [datetime] NOT NULL,
    [EndDate] [datetime] NOT NULL,
    [AccountId] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Bookings] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)

CREATE TABLE [dbo].[Units](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](100) NOT NULL,
    [Description] [nvarchar](1000) NULL,
    [Beds] [int] NOT NULL,
 CONSTRAINT [PK_Units] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)

CREATE TABLE [dbo].[UnitBookings](
    [UnitId] [int] NOT NULL,
    [BookingId] [int] NOT NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

POCOS:

public class Unit
{ …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework poco ef-code-first entity-framework-4.1

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