SQL查询groupby和where过滤接收到的参数



我想在Linq EF做这我的sql查询:

SELECT date FROM tab_4009_atv
WHERE id_asset IN ['ako','bj89','flity76']
GROUP BY date; 

但是有一个特殊的情况。我要过滤的这个列表作为如下参数接收:

public async Task<IEnumerable< Date>> getDates (IEnumerable< string>assetList){ }.

我该怎么做?谢谢!

SQL查询和您给出的c#方法签名并不真正适合对方。SQL查询返回一组日期,但c#方法返回一个日期列表。我们需要修改方法的返回类型。

另一方面,这个问题更多的是关于将字符串转换为Asset对象,而不是SQL或LINQ。由于我们不知道Asset对象是什么样子,因此无法帮助您进行转换。我们必须把这个责任委托给另一个方法。

另外,该方法不需要是async的。

下面的代码应该可以满足您的要求。

public class Asset
{
public DateTime Date { get; set; }
public string? OtherData { get; set; }
}
private static Asset StringToDate(string assetString)
{
// Convert string to asset object
}
public IEnumerable<IGrouping<DateTime, Asset>> GetDates(IEnumerable<string> assetList)
{
var filter = new[] {"ako", "bj89", "flity76"};

var dates = assetList
.Where(x => filter.Contains(x))
.Select(x => StringToDate(x))
.GroupBy(assets => assets.Date);
return dates;
}

最新更新