排除我的异常列表中的项目LINQ to SQL

排除我的异常列表中的项目LINQ to SQL,linq,linq-to-sql,Linq,Linq To Sql,我有一个linq查询,它返回一个URL列表。我是一个例外,不包括任何以许多扩展名结尾的URL,例如(bat,cmd,…)。我使用了许多编码到查询本身中的&&语句,但更愿意使用已定义的myExceptions列表,以给我更多的灵活性,因为该列表可能会更改,并且可能会在我的项目中的其他地方使用 我想替换查询的部分 && (!myURL.myURL.Trim().EndsWith("exe") &

我有一个linq查询,它返回一个URL列表。我是一个例外,不包括任何以许多扩展名结尾的URL,例如(bat,cmd,…)。我使用了许多编码到查询本身中的&&语句,但更愿意使用已定义的myExceptions列表,以给我更多的灵活性,因为该列表可能会更改,并且可能会在我的项目中的其他地方使用

我想替换查询的部分

  && (!myURL.myURL.Trim().EndsWith("exe")
                                           && !myURL.myURL.Trim().EndsWith("cmd")
                                           && !myURL.myURL.Trim().EndsWith("lnk")
                                           && !myURL.myURL.Trim().EndsWith("bat")                                              
                                           && myURL.myURL.Length > 0 
                                           ))
使用异常列表以获得更大的灵活性,如

 List<string> myExepections = new List<string> { "exe", "cmd", "lnk", "bat" };
看看这是否有效:

var results = myDataClass.LinksTabke.OrderBy(myURL => myURL.url_Description)
                                   .Where(
                                       myURL => myURL.PageID.Equals(QueryStringID)

                                       &&
                                       //Works for entity framework
                                       !myExepections.Any(x => x == myURL.myURL.Trim().Substring((myURL.myURL.length - 3), 3)) && myURL.myURL.Length>0)

                                       //Works for Linq 2 SQL and EF                  
                                       !myExepections.Contains(x => myURL.myURL.Trim().Substring((myURL.myURL.length - 3), 3))
                                       && myURL.myURL.Length>0)

                                   .Select(
                                       myURL =>
                                       new results
                                       {
                                           mySectionID = myURL.myTable.mySectionID,
                                           myDescText = myURL.myTable.Desc,
                                           LinkUrl = myURL.myURL
                                       }).Distinct();
           return results.ToList();

感谢您的建议,但不幸的是,这导致了错误消息“除了contains运算符外,查询操作的LINQ to SQL实现中不能使用本地序列”。好的,它对我有效,因为我使用的是实体框架。明白了!根据这里的建议,我使用contains方法(而不是Any)稍微修改了您建议的查询。我正要将其更改为://!myexexpections.Contains(x=>myURL.myURL.Trim().Substring((myURL.myURL.length-3),3))&&myURL.myURL.length>0/…我已经用对实体框架和Linq 2 SQL都有效的解决方案更新了答案,我不确定性能如何,但它们都有效。
var results = myDataClass.LinksTabke.OrderBy(myURL => myURL.url_Description)
                                   .Where(
                                       myURL => myURL.PageID.Equals(QueryStringID)

                                       &&
                                       //Works for entity framework
                                       !myExepections.Any(x => x == myURL.myURL.Trim().Substring((myURL.myURL.length - 3), 3)) && myURL.myURL.Length>0)

                                       //Works for Linq 2 SQL and EF                  
                                       !myExepections.Contains(x => myURL.myURL.Trim().Substring((myURL.myURL.length - 3), 3))
                                       && myURL.myURL.Length>0)

                                   .Select(
                                       myURL =>
                                       new results
                                       {
                                           mySectionID = myURL.myTable.mySectionID,
                                           myDescText = myURL.myTable.Desc,
                                           LinkUrl = myURL.myURL
                                       }).Distinct();
           return results.ToList();