C# LINQ到SQL-跨多个列的不同记录
我有一个关于我用LINQ写的一个问题的问题,我希望有人能帮我。基本上我有以下(示例数据) 因此,我需要做的是根据用户提供的条件返回记录,包括LanguageID和描述。这里棘手的部分是,如果有相同产品代码、语言和法规的多个版本,那么我只想返回最新版本 因此,我的现行法规如下(法规包含一份单独的立法清单): 提前谢谢C# LINQ到SQL-跨多个列的不同记录,c#,linq,C#,Linq,我有一个关于我用LINQ写的一个问题的问题,我希望有人能帮我。基本上我有以下(示例数据) 因此,我需要做的是根据用户提供的条件返回记录,包括LanguageID和描述。这里棘手的部分是,如果有相同产品代码、语言和法规的多个版本,那么我只想返回最新版本 因此,我的现行法规如下(法规包含一份单独的立法清单): 提前谢谢 Andrew根据ProductCode(1)对结果进行分组,并从每个分组项目中选择最大版本值(2): 按ProductCode(1)对结果进行分组,并从每个分组项目中选择最大Vers
Andrew根据
ProductCode
(1)对结果进行分组,并从每个分组项目中选择最大版本
值(2):
按
ProductCode
(1)对结果进行分组,并从每个分组项目中选择最大Version
值(2):
ProductCode LanguageID LegislationId Version
1234 English UK 1
1234 English UK 2
5678 English UK 1
9999 English UK 1
9999 English UK 2
9999 Spanish Spain 1
List<string> legList = pLegislations.Split(',').ToList();
IEnumerable<MyClass> results = null;
results = (from a in context.ALLProducts
let prodCode = a.ProductCode
let prodDesc = a.ProductDescription
where legList.Contains(a.LegislationID) &&
(a.LanguageID == pLanguage || pLanguage == null) &&
a.BrandName == pMarket &&
(prodCode.Contains(pSearch) || prodDesc.Contains(pSearch) ||
pSearch == string.Empty) &&
prodCode[0] != 'x' &&
((pMarket == "testMarket") ? prodCode.StartsWith("0") : true)
select new MyClass
{
BrandName = a.BrandName,
BulkCode = prodCode,
BulkDescription = prodDesc,
Language = a.LanguageName,
LanguageCode = a.LanguageID
}).ToList();
ProductCode LanguageID LegislationId Version
1234 English UK 2
5678 English UK 1
9999 English UK 2
9999 Spanish Spain 1
results = (from a in context.ALLProducts
let prodCode = a.ProductCode
let prodDesc = a.ProductDescription
where legList.Contains(a.LegislationID) &&
(a.LanguageID == pLanguage || pLanguage == null) &&
a.BrandName == pMarket &&
(prodCode.Contains(pSearch) ||
prodDesc.Contains(pSearch) ||
pSearch == string.Empty) &&
prodCode[0] != 'x' &&
((pMarket == "testMarket") ? prodCode.StartsWith("0") : true)
group a by a.ProductCode into g // 1
let lastProduct = g.OrderByDescending(x => x.Version).First() // 2
select new MyClass
{
BrandName = lastProduct.BrandName,
BulkCode = prodCode,
BulkDescription = prodDesc,
Language = lastProduct.LanguageName,
LanguageCode = lastProduct.LanguageID
}).ToList();