Linq查询包含的Group By - c#

我有一个Currency Code字符串列表的列表。

var currencyCode = new List<string>() { "USD", "SGD", "KWD", "BHD", "LYD" };

我还有另一个复杂的对象。

 var rate = new List<Rate>()
 {
        new Rate() { CurrencyName = "USD (SMALL)",CurrencyCode = "USD SMALL",BranchName="Branch1"},
        new Rate() { CurrencyName = "SGD BIG",CurrencyCode = "SGD BIG",BranchName="Branch1"},
        new Rate() { CurrencyName = "KUWAIT DINAR",CurrencyCode = "KWD",BranchName="Branch1"},
        new Rate() { CurrencyName = "USD BIG (100,50)",CurrencyCode = "USD BIG",BranchName="Branch1"},
        new Rate() { CurrencyName = "USD MEDIUM (10,20)",CurrencyCode = "USD MEDIUM",BranchName="Branch1"},
  };

我将在下面的列表中具有匹配的货币:

var matchedCurrency = from c in rate
                      where currency.Any(w => c.CurrencyCode.Contains(w))
                      select c;

我想要的是匹配的货币列表应按货币代码分组。

我按以下方式尝试过,但没有成功。

 var Grp = rate.GroupBy(item => currency.Any(w => item.CurrencyCode.Contains(w)))
          .Select(group => new
          {
              group.Key,
              DataList = group.ToList()
           });

我不明白我实际上是想念的。我已经尝试了各种方法。

我知道我可以遍历rate并推入另一个对象。但这看起来不太好,我想使用Linq做到这一点。但是我无法达到目的。

输出将与此对象一起显示:

public class CurrencyMap
{
    public string Code { get; set; }

    public List<Currency> currency { get; set; }
}
public class Currency
{
    public string CurrencyName { get; set; }
    public string CurrencyCode { get; set; }
    public string BranchName { get; set; }
}
enter code here

编辑:

我一开始错过了事情,但是如果在费率中找不到匹配的代码,我还需要有一个空列表。

在“比率”中,没有“ BHD”,“ LYD”的匹配列表。但我还需要输入代码为“ BHD”,“ LYD”的空列表

参考方案

首先选择匹配的货币代码,然后按选定的代码分组。

var groupedRates = rate
    .Select(r => new
    {
        rate = r,
        code = currencyCode.FirstOrDefault(c => r.CurrencyCode.Contains(c))
    })
    .GroupBy(x => x.code, x => x.rate); //maybe you don't want to throw away the resolved code like I do in the element selector...

编辑:我想我有点专注于分组方面。由于要包含所有货币代码并提到了特定的输出结构,因此无需分组,只需选择结果即可:

var groupedRatesList = currencyCode
    .Select(c => new CurrencyMap
    {
         Code = c,
         currency = rate
            .Where(x => x.CurrencyCode.Contains(c))
            .Select(x => new Currency
            {
                BranchName = x.BranchName,
                CurrencyCode = x.CurrencyCode, // or maybe you want to insert c here?
                CurrencyName = x.CurrencyName
            })
            .ToList()
     })
     .ToList();

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

Ajax表单未获得结果 - javascript

我有一个带有搜索功能的主页。从主页搜索可以正常工作,但是当我尝试使用ajax表单(在url.com/search?id=biology上)再次搜索时,我被重定向到404页面,提示未找到/Search。主页上的表格:@using (Html.BeginForm("Index", "Search", new { Retur…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…