【问题标题】:Equivalent IN operator in entity framework实体框架中的等效 IN 运算符
【发布时间】:2015-09-27 21:11:13
【问题描述】:

var query = from c in context.Albums c.AlbumID 在 albumIds 中的位置 选择 c.专辑名;

这里 albumIds 是一些自定义类型的 IENUM(在我的例子中它是一个实体)

当我执行上述查询时,我得到一个错误 运算符 == 不能应用于 int 和 IEnumerable 类型

这个错误是可以接受的,但是我该如何克服这个错误

【问题讨论】:

    标签: asp.net entity-framework-4 linq-to-entities


    【解决方案1】:
    var albumIds= new string[] { "900", "801", "802", "803","906" };                    
    var lstData = context.tbl.Where(
                     x => (x.TimeCreated >= yesterday && x.TimeCreated < today) && 
                     albumIds.Contains(x.TransactionSetId)
                   ).Select(x => x.X12_Interchange).ToList();
    

    【讨论】:

    • 欢迎来到 SO!如果您使用code formatting 来提高可读性并简要说明您的答案为何有效,这将非常有帮助。
    • 请补充说明。
    【解决方案2】:

    稍微转一下 - 你想检查你的专辑 id 的可枚举是否包含你刚刚在 linq 中迭代到的专辑的 id。所以像这样的......

    albumIds = {1,2,13,25,277,567};
    var query = context.Albums.Where(x=> albumIds.Contains(x.ID));
    

    (抱歉,在我面前没有工具的情况下编写示例代码,所以请原谅任何明显的错误。但希望你能从中得到想法)。

    【讨论】:

    • albumIds 未预定义... **场景:我有 3 个表 Singer、Album、MasterAlbums。 var query = (from c in context.Singers join d in context.albums on c.SingerID 等于 d.SignerID into albumIds select new () 现在在专辑表中我没有专辑名称我只有 id 我需要映射专辑表到 MasterAlbum 表以获取相应的专辑名称..
    • 在当前场景中,我得到一个错误 .contains is not defined on IENUM
    • 因此,如果您已经使用正确的关系定义了实体模型,那么您将会使 MasterAlbums 成为 Albums 实体的导航属性。在这种情况下,您可以在 linq 查询中使用 .Include("MasterAlbums") 来选择/返回专辑名称。有关更多详细信息,请参阅msdn.microsoft.com/en-us/data/jj574232.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多