0

以下是我的代码,我需要一个随机数组的单个字符串。

 string[,] array = new string[4,3]  { { "a1", "b1", "c1" }, {"a2", "b2", "c2" } , 
                                  { "a3", "b3", "c3" }, { "a4", "b4", "c4" } } ;

//string a =???
//string b =???
//string c =???

我需要的是 a1、b1 c1 或 a2、b2、c2 等...

任何想法将不胜感激..

谢谢, 阿纳布

4

3 回答 3

1

据我了解,您想获取随机获得的行的列。为此,只需Math.Random()在行索引上使用。在这种情况下,数组 [4]。

于 2013-08-12T11:26:48.753 回答
1

我强烈建议使用锯齿状数组。在这种情况下,您可能会使用此扩展方法:

private static readonly Random _generator = new Random();

public static T RandomItem<T>(this T[] array)
{
    return array[_generator.Next(array.Length)];
}

像这样使用它:

string[][] array = new string[][] {
    new string[] { "a1", "b1", "c1" },
    new string[] { "a2", "b2", "c2" }, 
    new string[] { "a3", "b3", "c3" },
    new string[] { "a4", "b4", "c4" } };

string randomValue = array.RandomItem().RandomItem(); // b2 or c4 or ... etc.

一次全部:

string[] randomValues = array.RandomItem(); // { "a3", "b3", "c3" } or ... etc.

或者

string randomValues = string.Join(", ", array.RandomItem()); // a4, b4, c4

为什么我推荐在这里解释

于 2013-08-12T11:37:26.203 回答
0

这将根据字符串的第二个字符对字符串进行分组

//http://stackoverflow.com/questions/3150678/using-linq-with-2d-array-select-not-found
string[,] array = new string[4,3]  { { "a1", "b1", "c1" }, {"a2", "b2", "c2" } , 
                                  { "a3", "b3", "c3" }, { "a4", "b4", "c4" } } ;

var query = from string item in array
            select item;

var groupby = query.GroupBy(x => x[1]).ToArray();

var rand = new Random();

//Dump is an extension method from LinqPad
groupby[rand.Next(groupby.Length)].Dump();

这将输出(随机):

> a1,b1,c1

> a2,b2,c2

> a3,b3,c3

> a4,b4,c4

大声笑,矫枉过正,没有读取数组已经被索引“分组”了......

http://www.linqpad.net/

于 2013-08-12T11:45:53.510 回答