前言
發生的情況是這樣的,
我有兩個linq語法,查詢出來的類別是一樣的。
之後邏輯判斷也都一樣,最簡單的方式就是,複製貼上。
但這種寫法,一旦下面的邏輯變動的話,要改兩個地方。忘了改的話,怎麼死的都不知道。
void Main()
{
test();
}
class aa
{
public string id{get;set;}
public string Name{get;set;}
public int Value{get;set;}
}
private void test()
{
var li = new List<aa>();
aa one = new aa();
one.id="A";
one.Name="甲";
one.Value=1080101;
li.Add(one);
li.Add(new aa{ id="A",Name="乙",Value=1080102 });
li.Add(new aa{ id="B",Name="丙",Value=7 });
li.Add(new aa{ id="B",Name="丁",Value=1 });
li.Add(new aa{ id="B",Name="戊",Value=10 });
var query = from p in li
group p by new{p.id} into g
select new{
g.Key.id,
Name = (from g2 in g where g2.Value == g.Max(s => s.Value) select g2.Name).Max(),
Value= (from g2 in g where g2.Value == g.Max(s => s.Value) select g2.Value).Max()
};
query.Dump();
var query3 = li.GroupBy(p=>p.id).Max(p=>p.Value);
var query2 = from p in li
group p by new{p.id} into g
select g;
query2.Dump();
}
一般我們要找集合內有沒有特定字串會用
goal.Contains("Date")
但要注意的是,這邊的Date一定要是完整的字串。不屬於like的效果。
但如果想要用like的效果,該如何做?
使用Linq的方式,
var dateFormat = goal.Where(p => p.Contains("Date"))
這樣等同使用like。會將字串內有Date的字取出。
附註:goal是一個字串集合