Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过根据条件排除特定数据筛选数据_C#_.net_Entity Framework_Linq_Asp.net Core - Fatal编程技术网

C# 通过根据条件排除特定数据筛选数据

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)) { /

我想基于trackId和InUse属性检查列表中的记录,因为我想要具有InUse属性=false的唯一数据,但我想排除Track=“S”的记录。如何排除这一点,以便我的条件不会检查具有Track=“S”的记录,因为SidList也包含具有Track=“S”的记录。以下是我的情况

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)))
{
    //...
}