通过根据条件排除特定数据来过滤数据

问题描述

我想检查基于tr​​ackId和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')))

            {
            }

解决方法

var filteredList = SidList.Where(q => q.TrackId == item.TrackId && q.InUse && !q.Track.Contains('S'))
foreach ( var filteredElement in filteredList)
{
     // not unique action goes here
}
,

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

结果:

enter image description here