C# 通过根据条件排除特定数据筛选数据
我想基于trackId和InUse属性检查列表中的记录,因为我想要具有InUse属性=false的唯一数据,但我想排除Track=“S”的记录。如何排除这一点,以便我的条件不会检查具有Track=“S”的记录,因为SidList也包含具有Track=“S”的记录。以下是我的情况C# 通过根据条件排除特定数据筛选数据,c#,.net,entity-framework,linq,asp.net-core,C#,.net,Entity Framework,Linq,Asp.net Core,我想基于trackId和InUse属性检查列表中的记录,因为我想要具有InUse属性=false的唯一数据,但我想排除Track=“S”的记录。如何排除这一点,以便我的条件不会检查具有Track=“S”的记录,因为SidList也包含具有Track=“S”的记录。以下是我的情况 if (SidList.Any(q => q.TrackId == item.TrackId && q.InUse == true)) { /
if (SidList.Any(q => q.TrackId == item.TrackId && q.InUse == true))
{
//Not unique logic goes here
}
我试过这个条件,但不起作用
if (SidList.Any(q => q.TrackId == item.TrackId && q.InUse == true && !q.Track.Contains('S')))
{
}
string.Contains
区分大小写。如果Track
包含小写s
的数据,则语句!q、 Track.Contains('S')
将返回true
如果要忽略该情况,请按以下方式进行更改:
!q.Track.Contains('S', StringComparison.InvariantCultureIgnoreCase)
以下是整个工作演示:
型号:
public class TrackModel
{
public int TrackId { get; set; }
public bool InUse { get; set; }
public string Track { get; set; }
}
控制器:
var SidList = new List<TrackModel>() {
new TrackModel(){TrackId=1,InUse=false,Track="dfdfds"}
};
if (SidList.Any(q => q.TrackId == 1 && q.InUse == false&& !q.Track.Contains('S', StringComparison.InvariantCultureIgnoreCase)))
{
//...
}
var SidList=新列表(){
新的TrackModel(){TrackId=1,InUse=false,Track=“dfds”}
};
if(SidList.Any(q=>q.TrackId==1&&q.InUse==false&&!q.Track.Contains('S',StringComparison.InvariantCultureIgnoreCase)))
{
//...
}
结果:
你到底在找什么?唯一的列表(像一个不同的函数)?没有像if(SidList.Any(q=>q.TrackId==item.TrackId&&q.InUse==true&&!q.Track.Contains('S')){}您的要求是将
InUse
属性设置为false
,但您正在LINQ语句中检查q.InUse==true
?我建议您可以为我们提供模型。我怀疑您是否不希望跟踪包含S或跟踪等于S?这可能是一个很好的答案,但如果你考虑做一个帖子来提供一些上下文和快速的细节(用简单的英语)来解释为什么你把这个建议作为OP的解决方案,那么更合适,如果OP只想检查是否有,那么(FieldEdList.Cuffice>0)就足够了。
var SidList = new List<TrackModel>() {
new TrackModel(){TrackId=1,InUse=false,Track="dfdfds"}
};
if (SidList.Any(q => q.TrackId == 1 && q.InUse == false&& !q.Track.Contains('S', StringComparison.InvariantCultureIgnoreCase)))
{
//...
}