質問

How can I do below code with Linq expression in C#.net?

Currently, I am doing this with a foreach loop of DataTable.

I want to do it with LINQ or AsEnumerable() function.

Current C# code:

protected String GetRecommendMasterSquence() 
{
    ArrayList strItems = new ArrayList();
    DataTable dt = new DataTable();
    foreach(DataRow dr in dt.Rows) {
        if (Convert.ToBoolean(dr["isSelected"])) {
            strItems.Add(Convert.ToString(dr["RecommendID"]));
        }
    }
    return string.Join(",", (string[]) strItems.ToArray(Type.GetType("System.String")));

}
役に立ちましたか?

解決

You can use combination of string.Join and .ToArray() on Enumerable.

string str = string.Join(",", dt.AsEnumerable()
                                .Where(r => r.Field<bool>("isSelected"))
                                .Select(c=>c.Field<string>("RecommendID"))
                                .ToArray());

他のヒント

You can use table.AsEnumerable + Enumerable.Where:

var selectedRecommendIDs = dt.AsEnumerable()
    .Where(r => r.Field<bool>("isSelected"))
    .Select(r => r.Field<int>("RecommendID"));
string result = string.Join(",", selectedRecommendIDs);

Note that i've presumed that isSelected is a bool column and that RecommendID is an int column. Change it accordingly if that's not true. It should give you an idea anyway. It's better to use the DataRow.Field extension method anyway since it is strongly typed and support nullable types.

var ids = dt.Rows
       .Where(x => !Convert.ToBoolean(x["isSelected"]))
       .Select(x => Convert.ToString(x["RecommendID"]))

return string.Join(",", ids);
        var recommendIds = 
            from myRow in dt.AsEnumerable()
            where myRow.Field<bool>("isSelected") == true
            select myRow.Field<string>("RecommendID");

        return string.Join(",", recommendIds.ToArray());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top