小编Rya*_*saw的帖子

当我定义了隐式强制转换时,为什么Linq Cast <T>操作会失败?

我创建了两个类,其中一个类之间有隐式转换:

public class Class1
{
    public int Test1;
}

public class Class2
{
    public int Test2;

    public static implicit operator Class1(Class2 item)
    {
        return new Class1{Test1 = item.Test2};
    }
}
Run Code Online (Sandbox Code Playgroud)

当我创建一个类型的新列表并尝试将<T>转换为另一个类型时,它会因InvalidCastException而失败:

List<Class2> items = new List<Class2>{new Class2{Test2 = 9}};
foreach (Class1 item in items.Cast<Class1>())
{
    Console.WriteLine(item.Test1);
}
Run Code Online (Sandbox Code Playgroud)

但是,这可以正常工作:

foreach (Class1 item in items)
{
    Console.WriteLine(item.Test1);
}
Run Code Online (Sandbox Code Playgroud)

为什么在使用Cast <T>时没有调用隐式转换?

.net linq casting

19
推荐指数
1
解决办法
6301
查看次数

查询结果不能多​​次枚举?

我正在使用LINQ to SQL在Sql server 2008中获取FullTextSearch存储过程的搜索结果.我将过程从服务器资源管理器拖到设计器,并使用适当的返回类型和参数创建了方法.现在问题是,我需要获取调用此方法的结果的Count,因此使用我的存储库方法(将调用Sproc方法并将结果作为IQueryable返回),我进行以下调用.

var result = repository.FullTextSearch(searchText);
        int resultsCount = result.Count();
        var ret = result.Skip((pageNumber - 1) * PageSize).Take(PageSize).ToList();
Run Code Online (Sandbox Code Playgroud)

每次我尝试运行它时,此代码都会生成一个InvalidOperationException,异常说(是的,你猜对了!)"查询结果不能多​​次枚举."

为Sproc生成的方法返回ISingleResult,它应该是OK AFAIK.我需要在我的视图上支持分页,所以我需要知道总页数,如果我能得到所有项目的计数,那么(再次AFAIK)是可能的.

伙计,我在这里想念的是什么?

invalidoperationexception linq-to-sql

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

通过Visual Studio在同一端口上运行多个IIS Express实例

我目前在IIS Express中为我正在处理的每个应用程序配置了站点.它们中的每一个都设置为在端口80和443上本地运行,但具有单独的绑定(http:// site1 /http:// site2 /),这些别名指向我的hosts文件中的本地别名.

我可以在直接启动IIS Express时(从命令行)启动这些站点,但是当调试失败时让VS2010启动它们.第一个站点将按预期启动和调试,但第二个站点将启动生成错误:"无法启动IIS Express Web服务器.端口'80'正在使用中."

这是我正在使用的IIS Express配置(略微修改以删除项目名称):

<site name="Site1" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site1" />
        <binding protocol="https" bindingInformation="*:443:Site1" />
    </bindings>
</site>
<site name="Site2" id="2" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site2" />
        <binding protocol="https" bindingInformation="*:443:Site2" />
    </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

看起来VS正在检查当前正在端口80上侦听的任何内容,而IIS Express则不受此限制.我仍然可以将VS附加到由命令行启动的IIS Express实例,但我更愿意让VS管理它们.

这是VS2010如何处理IIS Express的限制,如果是这样,有什么好的解决方法?

visual-studio-2010 iis-express

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

LinqToSQl和成员访问在类型异常上不合法

基本问题......

我有一个执行以下代码的方法:

IList<Gig> gigs = GetGigs().WithArtist(artistId).ToList();
Run Code Online (Sandbox Code Playgroud)

GetGigs()方法通过LinqToSql从我的数据库中获取Gigs ...

因此,当执行GetGigs().WithArtist(artistId).ToList()时,我得到以下异常:

Member access 'ListenTo.Shared.DO.Artist Artist' of 'ListenTo.Shared.DO.Act' not legal on type 'System.Collections.Generic.List`1[ListenTo.Shared.DO.Act] 
Run Code Online (Sandbox Code Playgroud)

请注意,扩展功能"WithArtist"如下所示:

    public static IQueryable<Gig> WithArtist(this IQueryable<Gig> qry, Guid artistId)
    {
        return from gig in qry
               where gig.Acts.Any(act => (null != act.Artist) && (act.Artist.ID == artistId))
               orderby gig.StartDate
               select gig;
    }
Run Code Online (Sandbox Code Playgroud)

如果我用一个在代码中构造gigs集合的方法替换GetGigs()方法(而不是通过LinqToSQL从DB中),我不会得到异常.

所以我很确定问题出在我的LinqToSQl代码而不是对象结构上.

但是,我没有IDEA为什么LinqToSQl版本无法正常工作,所以我在下面列出了所有相关代码.任何帮助都会非常感激地接受!

LinqToSQL代码....

    public IQueryable<ListenTo.Shared.DO.Gig> GetGigs()
    {
        return from g in DBContext.Gigs
               let acts = GetActs(g.ID)
               join venue in DBContext.Venues on g.VenueID equals venue.ID
               select new ListenTo.Shared.DO.Gig …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-sql

10
推荐指数
3
解决办法
5065
查看次数

.NET vNext仅使用引用包中的一个dll

我正在向依赖项部分添加依赖项(mongocsharpdriver),net45如下所示:

    "net45": {
        "dependencies": {
            "System.Data": "",
            "System.ComponentModel.DataAnnotations": "",
            "mongocsharpdriver": "1.9.1"
        }
    },
Run Code Online (Sandbox Code Playgroud)

基于我使用的所有其他依赖项,这应该足以使其工作.这是我投入的一些示例代码来测试它:

MongoDB.Bson.BsonArray test;
MongoDB.Driver.RemoveFlags test2;
Run Code Online (Sandbox Code Playgroud)

有了这个,我希望编译,但MongoDB.Driver不被认可.MongoDB.Bson.BsonArray工作良好.

在同一个程序包中有两个程序集在vNext中是不受支持的方案,还是尚未实现?

visual-studio nuget visual-studio-2015 asp.net-core

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

如何使用L2E执行此查询?

我有2个表:

Activities       ActivityKeywords
**********       ****************
ID         -->   ActivityID
Name             Keyword
Run Code Online (Sandbox Code Playgroud)

我需要返回与特定关键字匹配的所有活动.

c# linq linq-to-entities

2
推荐指数
1
解决办法
723
查看次数