我有一個linq查詢在我的aspnet核心應用程序返回更多的行,那麼它應該。查詢如下。如何做一個linq組
public List<csAutoComplete> GetAutoComplete(string Type, string filter)
{
string[] GasCodesnotListed = { "F97", "F98", "F99" };
Model1 = from x in _context.TblGascodes
where ((x.GasCode.StartsWith("F13") || x.GasName.StartsWith("F13")) &&
!GasCodesnotListed.Contains(x.FedclusterCode))
orderby x.GasCode
group x by new csAutoComplete { ACCode = x.GasCode, ACName = x.GasName } into Alpha
select new csAutoComplete <=== (Is this the issue???)
{
ACCode = Alpha.Key.ACCode,
ACName = Alpha.Key.ACCode + " - " + Alpha.Key.ACName
};
return Model1.ToList();
}
} 回報(7)導致
所以我粘貼到LINQ墊,並得到了結果,我預計(1)
string[] GasCodesnotListed = { "F97", "F98", "F99" };
TblGasCodes
.Where (
x =>
((x.GasCode.StartsWith ("F13") || x.GasName.StartsWith ("F13")) &&
!(GasCodesnotListed.Contains (x.GasCode))
)
)
.OrderBy (x => x.GasCode)
.GroupBy (
x =>
new
{
ACCode = x.GasCode,
ACName = x.GasName
}
)
.Select (
Alpha =>
new
{
ACCode = Alpha.Key.ACCode,
ACName = ((Alpha.Key.ACCode + " - ") + Alpha.Key.ACName)
}
)
唯一的區別似乎是在新的csAutoComplete。如果這是一個類定義,爲什麼這應該有所作爲?我該如何解決這個問題。
如果'csAutoComplete'沒有覆蓋'Equals',它將通過Object.ReferenceEquals()進行比較,而爲了GroupBy的目的,匿名類型(如第二個示例中)是相同的,如果所有屬性是相同的。我會使用匿名類型進行分組。 –
當你說匿名類型時,我不明白這一點。你的意思是創建新變量並刪除類? –
在你的第二個版本中,你有'new ACCode = x.GasCode, ACName = x.GasName }' - 你正在創建一個匿名類型的實例。 –