やらなければならない悪い要件があります。とにかく、それをアプリケーションに実装する必要があります。
Track
クラスがあります
public class Track
{
public string Name { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
そして、私はいくつかのテストデータを持っています
List<Track> Records = new List<Track>
{
new Track { City = "a", Name = "a", Country = "i" }, // Track 1
new Track { City = "b", Name = "b", Country = "i" }, // Track 2
new Track { City = "a", Name = null, Country = "J" }, // Track 3
new Track { City = "c", Name = "a", Country = "J" }, // Track 4
new Track { City = "b", Name = "a", Country = null}, // Track 5
};
Records
要件は、渡された値に基づいてデータをクエリする必要があることです。いずれかのプロパティが である場合null
、検索条件はそのプロパティを無視する必要があります。プロパティに基づいてクエリする必要がありますNonNull
。
例:
If i query for City = a, Name = "b", Country = "i" then Result is: Track 1 & Track 3
If i query for City = c, Name = "p", Country = "w" then Result is: Track 4
Name
&Country
には null 値がありますTrack 3
。Track 5
そのため、検索では無視されます。それが明確であることを願っています
私は最終的に以下のロジックにたどり着きました
var filterRecords = new List<Track>();
if (!Records.Any(t => string.IsNullOrWhiteSpace(t.City)))
{
filterRecords = Records.Where(c => c.City == _city).ToList(); // Here _city is the method parameter.. assume "a"
}
if (!Records.Any(t => string.IsNullOrWhiteSpace(t.Country)))
{
filterRecords = filterRecords.Where(c => c.City == _country).ToList(); // Here _country is the method parameter.. assume "c"
}
Track
クラスには 12 個のプロパティがあります。上記のような 12 回のチェックは良い兆候ではありません。LINQ
またはその他の簡単なものを使用してこれを達成したいと思います。
何か提案をお願いします?.