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