C# Linq 常用 整理 Join
https://www.cnblogs.com/dennyw/p/14235206.html
C# Linq 常用 整理 Join
using System.Linq;
1.DataTable 獲取列合計
fiel 為列。
1.1無查詢條件
var sum = dt.AsEnumerable().Sum(s => s.Field<decimal>(fiel));
1.2有查詢條件
var sum = dt.Select(fiel+" is not null").AsEnumerable().Sum(s => s.Field<decimal>(fiel));
2.List 獲取對像
List<Player> listPlayers = new List<Player>();
if (listPlayers.Exists(c => c.gms_location == id))
Player p =listPlayers.First(c => c.gms_location == id);
3.List 合計列
3.1 數量
listPlayers.Where(a => a.gms_gign == "警察" &&a.isDie).Count();
3.2.合計列
List<wktype> rows;
var je = rows.Sum(x => x.je);
var cs = rows.Where().Sum(x => x.cs);
public class wktype public string type { get; set; } public Decimal cs { get; set; }
}
4.List排序 檢索 遍歷
4.1
List<Player> ps = listPlayers.Where(a => a.gms_gign == "警察").OrderBy(a=>a.gms_location).ToList<Player>();//OrderByDescending
foreach(Player p in ps)
}
更新 : ps .ForEach(x => x.stock=-1)
帶條件更新: info.ForEach(x => { if (x.stock == -1) { x.stock = 1; } });
4.2 where p.gms_gign == "警察" select p;
foreach(Player p in ps)
}
List<int> arr = new List<int>() { 1, 2, 3, 4, 5, 6, 7 }; var s = (from v in arr where v > 3 select v).Sum(); var sss = arr.SelectMany<int, string>(a => { return new List<string>() { "a", a.ToString() }; }); MessageBox.Show(s.ToString());
選取一列,去重,轉為字符串數組 string[]
var groups = map.listMap.Where(a => a.visible == "1").Select(o => o.mname).Distinct().ToArray();
或其他數組 .Distinct().ToArray();
var groups1 = map.listMap .Select(o => new { a = o.mname,b="aa" }) .ToArray();
ViewBag.groups1 = groups1;
分組轉List<string>
var groups1 = map.listMap .GroupBy(a => a.mname)
.Select(o => o.Key);
ViewBag.groups1 = groups1.ToList();
或其他類型
var groups1 = map.listMap .GroupBy(a => a.mname)
.Select(o => new {key =o.Key});
ViewBag.groups1 = groups1.ToList();
4.3 Join
string roles = string.Join(",", chkListRole.CheckedItems.Cast<string>().Select(a=>a.ToString()));