facebook twitter hatena line google mixi email

「Unity/Csharp/linq」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(数値の合計)
行59: 行59:
 
==like検索==
 
==like検索==
 
  List<Score> scores = FindAll();
 
  List<Score> scores = FindAll();
  List<Score> scores = scores.Where(record => record.yyyymmdd.Contains("/201903/"));
+
  IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.Contains("/201903/"));
  
 
==like前方一致==
 
==like前方一致==
 
  List<Score> scores = FindAll();
 
  List<Score> scores = FindAll();
  List<Score> scores = scores.Where(record => record.yyyymmdd.StartsWith("201903"));
+
  IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.StartsWith("201903"));
  
 
==like後方一致==
 
==like後方一致==
 
  List<Score> scores = FindAll();
 
  List<Score> scores = FindAll();
  List<Score> scores = scores.Where(record => record.yyyymmdd.EndsWith("0316"));
+
  IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.EndsWith("0316"));

2019年3月14日 (木) 03:00時点における版

準備

using System.Linq;

条件一行だけ(fetchRow)

public ScoreDay FindRowByYyyymmdd(string yyyymmdd)
{
    List<ScoreDay> scores = FindAll();
    return scores.FirstOrDefault(score => score.yyyymmdd == yyyymmdd);
}

条件複数行(fetchAll)

public IEnumerable<ScoreDay> FindAllByYyyymmdd(string yyyymmdd)
{
    List<ScoreDay> scores = FindAll();
    return scores.Where(score => score.yyyymmdd == yyyymmdd);
}

順序

User[] users = new User[]
{
            new User() { age = 10, name = "taro" },
            new User() { age = 13, name = "jiro" },
            new User() { age = 12, name = "saburo" },
            new User() { age = 15, name = "siro" },
};
// 年下順
IOrderedEnumerable<Parameter>   orderedUsers   = users.OrderBy( value => value.age );
// 年上順
IOrderedEnumerable<Parameter>   orderedUsers   = users.OrderByDescending( value => value.age );

参考:https://doruby.jp/users/ino/entries/%E3%80%90C--Unity%E3%80%91LINQ%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E3%82%89%E3%81%A8%E3%81%A6%E3%82%82%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%81%A0%E3%81%A3%E3%81%9F


取得件数を絞る

List<Score> scores = new List<Score>();
IEnumerable<Score> tmpScores = scores.Skip(0).Take(100);

指定条件だけに絞る

List<ScoreDay> scores = FindAll();
IEnumerable<Score> tmpScores = scores.Where(score => score.sec > 6);
List<Score> scores = tmpScores.ToList();

IEnumerableをListへ変換

IEnumerable<Score> tmpScores = //  略・・・
List<Score> scores = tmpScores.ToList());

数値の合計

List<Score> scores = FindAll();
return scores.Sum(record => record.missCnt);

like検索

List<Score> scores = FindAll();
IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.Contains("/201903/"));

like前方一致

List<Score> scores = FindAll();
IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.StartsWith("201903"));

like後方一致

List<Score> scores = FindAll();
IEnumerable<Score> scores = scores.Where(record => record.yyyymmdd.EndsWith("0316"));